我有一个NSMutableArray(正确初始化),充当缓冲区添加对象并删除第一个对象。我在大多数情况下都能正常工作,而且在测试时总是如此,但我偶尔会收到用户的崩溃报告,例如。
[__NSArrayM removeObjectsInRange:]: range {0, 1} extends beyond bounds for empty array'
应用程序中的相关代码如下所示
[self.peakArray addObject:@(peak)];
if([self.peakArray count]>0){
[self.peakArray removeObjectAtIndex:0];
}
代码位于串行调度队列中的AVCaptureSession中的CaptureOutput:didOutputSampleBuffer中。该数组不会在其他任何地方迭代或更新。如何在删除对象行崩溃?如果计数为零,则该行不应执行?
(注意:当到达代码的这一部分时,数组通常包含超过一百个对象)