关闭

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

618人阅读 评论(0) 收藏 举报
分类:

解决方法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来进行操作
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:430566次
    • 积分:6749
    • 等级:
    • 排名:第3639名
    • 原创:215篇
    • 转载:322篇
    • 译文:0篇
    • 评论:27条
    联系方式
    微信:chenfan1112015 QQ:851327579
    最新评论