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来进行操作
//
保存搜索记录
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来进行操作
相关文章推荐
- 创建dynamic web project工程中遇到的问题
- 小明的骰子
- 完美字符串
- Python_XlsxWriter_简介
- iOS 利用平移缩放旋转手势对view实现对应的平移缩放旋转效果(一)
- jquery判断表单提交是否为空
- (二) 登陆身份验证后注销
- oracle 静默安装、删除实例
- 测试技术培训:如何测试磁盘写的速度
- 自己对单点登录的一点小认识
- Uva 147 Dollars(是完全背包)
- 二手车试驾是重点应该注意哪几点?
- jstl 日期处理
- 小鑫与斐波那契(二)
- TCP:WireShark分析,序列号Seq和确认号Ack
- iBaits中SqlMapClientTemplate的使用及方法
- 在线白板,基于socket.io的多人在线协作工具
- jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
- mysql 的linux 忘记了密码
- 【转】Jmeter入门:如何建立和使用Jmeter测试环境