您的位置:首页 > 其它

Collection <__NSCFDictionary: 0xc425570> was mutated while being enumerated.

2015-11-20 17:12 441 查看
解决方法1:

    //
保存搜索记录
    for (int i =
0; i < _muArrayData.count; i++) {       
// 去掉重复的历史记录
        NSString *stringText =
_muArrayData[i];
        if ([stringText
isEqualToString:self.searchBarGreens.text]) {
            [self.tableView
beginUpdates];
            [self.tableView
deleteRowsAtIndexPaths:@[[NSIndexPath
indexPathForRow:i inSection:1]]
withRowAnimation:UITableViewRowAnimationAutomatic];
            [_muArrayData
removeObject:stringText];
            [self.tableView
endUpdates];
        }
    }

解决方法2:

错误:Terminating app due to uncaught exception 'NSGenericException', reason: 

'*** Collection <__NSCFDictionary: 0xc425570> was mutated while being enumerated.
因为我在枚举menuList可变数组的时候,给menuList添加元素,那这个数组的大小发生了变化,不知道枚举多少次了。
一般2种情况会发生这种错误:
1,对可变数组A在枚举的时候,添加或者删除数组A的元素,改变了数组A的大小。
2,对于数组B,一个线程在对B进行枚举操作,另一个线程改变B数组的大小。

错误:Terminating app due to uncaught exception 'NSGenericException', reason: 
'*** Collection <__NSCFDictionary: 0xc425570> was mutated while being enumerated.
答案:原因是NSArry若在多线程中进行操作是很敏感的。
如果在某个线程,对A NSArry进行写操作。在另外某线程读取A操作,就会出现“Collection was mutated while being enumerated”的错误警告。

解决办法可以,B= [NSArray arrayWithArray: A],再通过B来进行操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: