无法捕获 Objective-c 中的范围越界异常
Can't catch range out of bounds exception in Objective-c
我在 xCode 中收到此错误消息:
-[__NSCFString substringWithRange:]: Range {18446744073709551615, 1} out of bounds; string length 71. This will become an exception for apps linked after 10.10 and iOS 8. Warning shown once per app execution.
我正在尝试查找代码中发生这种情况的位置。
我的项目中有十几个 substringWithRange 方法。我在它们周围放置了 try catch 块:
@try {
substring = [s substringWithRange:NSMakeRange(i, j - i)];
}
@catch (NSException* e) {
NSLog(@"Except: %@", e);
}
None 个 catch 块正在执行。
我尝试将我的部署目标设置为 8.4。
如有帮助将不胜感激!
大值18446744073709551615是NSNotFound
的值(2^64-1,64位能表示的最大整数)
您可能首先在另一个字符串中寻找(子)字符串,但未找到该子字符串。您返回的不是有效索引 NSNotFound
。大概你没有预料到或测试这种特殊情况并将 NSNotFound
值传递给 NSMakeRange()
,在那里触发了错误。
如果只有少数地方调用 NSMakeRange
,如您所指出的,那么您应该能够 (1) 验证这个假设,以及 (2) 完全通过检查代码。
我在 xCode 中收到此错误消息:
-[__NSCFString substringWithRange:]: Range {18446744073709551615, 1} out of bounds; string length 71. This will become an exception for apps linked after 10.10 and iOS 8. Warning shown once per app execution.
我正在尝试查找代码中发生这种情况的位置。
我的项目中有十几个 substringWithRange 方法。我在它们周围放置了 try catch 块:
@try {
substring = [s substringWithRange:NSMakeRange(i, j - i)];
}
@catch (NSException* e) {
NSLog(@"Except: %@", e);
}
None 个 catch 块正在执行。
我尝试将我的部署目标设置为 8.4。
如有帮助将不胜感激!
大值18446744073709551615是NSNotFound
的值(2^64-1,64位能表示的最大整数)
您可能首先在另一个字符串中寻找(子)字符串,但未找到该子字符串。您返回的不是有效索引 NSNotFound
。大概你没有预料到或测试这种特殊情况并将 NSNotFound
值传递给 NSMakeRange()
,在那里触发了错误。
如果只有少数地方调用 NSMakeRange
,如您所指出的,那么您应该能够 (1) 验证这个假设,以及 (2) 完全通过检查代码。