GenericException:集合在枚举时发生了变异

时间:2014-01-24 10:22:39

标签: ios iphone nsmutablearray

我已经搜索过这个问题了,我知道这是因为数组在枚举时被操纵了。在我的代码中,我使用的是:

-(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.'

1 个答案:

答案 0 :(得分:3)

您需要了解类和堆栈对象(如整数和事物)之间的区别。设置与其他内容相同的内容如果它是一个类,则复制它。您需要改为使用[self.active copy]