我正在努力寻找一个自昨晚以来一直困扰我的问题的答案。
NSRange searchRange.location = 0;
NSRange searchRange.length = [string length]; // > 2000 characters long
NSString *substring = @"substring"; // Occurs within string several times
NSRange substringRange = [string rangeOfString:substring options:NSCaseInsensitiveSearch range:searchRange];
// Some code here. Create substring and add it to array.
// Move the search range on
searchRange.location = substringRange.location + substringRange.length;
// fails
substringRange = [string rangeOfString:substring options:NSCaseInsensitiveSearch range:searchRange];
第一个 [string rangeOfString...] 方法被顺利调用,但第二个调用导致以下错误:
* -[__NSCFString rangeOfString:options:range:locale:]: 范围或索引超出范围
据我所知,问题是由将新值分配给 searchRange.location 引起的——删除该语句会导致对该方法的第二次调用成功。查看调试器,这些值似乎与预测的一样——没有超出范围——我对着监视器尖叫。
这只是简单的添加......不是吗?