关于为什么下面指示的行会引发异常的任何线索?
-(double)calibrationValueAtIndex:(int)index
{
NSLog(@"count: %d index: %d",[theTopValues count], index);
return [[theTopValues objectAtIndex:index] doubleValue]; // exception happening here
}
2012-07-23 21:51:16.448 TestAppTimerAndHits[15130:f803] count: 9 index: 7
2012-07-23 21:51:22.339 TestAppTimerAndHits[15130:f803] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSOrderedSetM objectAtIndex:]: index 7 beyond bounds [0 .. 4]'
它如何在之前的行中 NSLog 计数为 9,然后在异常中报告边界是[0 .. 4]
?
异常似乎是“随机”抛出的。在某些情况下,数组边界很好,这意味着我可以在索引 8 处获取对象......但其他时候,它会报告低至[0 .. 2]
?
在视图控制器中(项目中只有 VC 一个)
theBufferManager = [[HitBufferManager alloc] init];
在 .h 文件中:@property NSMutableOrderedSet* theTopValues;
在 .m 文件中:@synthesize theTopValues;
-HitBufferManager 的 (id)init: theTopValues = [NSMutableOrderedSet orderedSetWithCapacity:numToStore]; // 返回一个自动发布的版本。
添加/编辑单个项目:
[self sortTopValues];
if([theTopValues count]<numToStore)
{
[theTopValues addObject:[NSNumber numberWithDouble:windowVal]];
}
else if(logVal> [[theTopValues objectAtIndex:0] doubleValue])
{
[theTopValues replaceObjectAtIndex:0 withObject:[NSNumber numberWithDouble:logVal]];
}