我試圖找到自昨晚以來一直困擾我的問題的答案。ObjC/Cocoa NSRange:範圍或索引超出範圍
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];
第[串rangeOfString ...]方法被調用順利,但第二個電話會導致以下錯誤:
* -[__NSCFString rangeOfString:options:range:locale:]: Range or index out of bounds
從我所知道的,問題是造成通過將新值賦值給searchRange.location - 刪除該語句會導致對該方法的第二次調用成功。看着調試器,這些值似乎與預期的一樣 - 沒有超出範圍 - 我只能在顯示器上尖叫。
這只是簡單的補充......不是嗎?
你可能不想申報'NSRange searchRange'兩次。 –
我不知道你想做什麼。 – Radu
@Radu在結構上執行算術? – Kreiri