我已经搜索过这个问题了,我知道这是因为数组在枚举时被操纵了。在我的代码中,我使用的是:
-(BOOL)busy
{
for(DataRequest* request in self.active)
if(!request.invisible)
return YES;
return NO;
}
当数据从服务器加载时,和-(BOOL)busy
被频繁调用。同样在我的代码中,我有一些行添加和删除self.active
中的对象。因此,我得到了例外。然后我在代码中做了一个更改:
-(BOOL)busy
{
self.tempActive = self.active;
for(DataRequest* request in _tempActive)
if(!request.invisible)
return YES;
return NO;
}
但我仍然得到同样的例外。我做错了什么,有什么想法吗?这是唯一使用self.tempActive
的代码。
我得到的例外是:
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x9ec8f60> was mutated while being enumerated.'
答案 0 :(得分:3)
您需要了解类和堆栈对象(如整数和事物)之间的区别。设置与其他内容相同的内容不如果它是一个类,则复制它。您需要改为使用[self.active copy]
。