网上找了下,原因是因为一边遍历数组,又同时修改这个数组里面的内容,导致崩溃。
for in 循环中的便利内容不能被改变, 是因为如果改变其便利的内容会少一个, 而系统是不会允许这个发生的所以就会crash...但是当改变最后一个的内容时, 就不会crash, 是因为此时遍历已经结束, 结束之后对内容做修改是允许的。
有两种解决方法,第一种方法就是在定义一个一模一样的数组,便利数组A然后操作数组B; 第二种方法是找到符合的条件之后,暂停遍历,然后修改数组的内容。
解决方法详细代码分别如下:
NSMutableArray *mutArray = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",@"4",nil]; NSArray *array = [NSArray arrayWithArray: mutArray]; for (NSString *str in array) { if ([str isEqualToString:@"3"]){ [mutArray removeObject: str]; } }
NSMutableArray *mutArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",nil]; [mutArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { if ([obj isEqualToString:@"3"]) { *stop = YES; if (*stop == YES) { [mutArray removeObject:obj]; }
} if (*stop) { NSLog(@"array is %@",mutArray); } }];
bug:*** Collection <__NSArrayM: 0x1c444d440> was mutated while being enumerated.的更多相关文章
-
解决Collection <;__NSArrayM: 0xb550c30>; was mutated while being enumerated.-
bug: 今天做项目的时候遇到了这样一个崩溃信息: 解决Collection <__NSArrayM: 0xb550c30> was mutated while being enumera ...
-
*** Collection <;__NSArrayM: 0x600000647380>; was mutated while being enumerated.
*** Collection <__NSArrayM: 0x600000647380> was mutated while being enumerated.
-
iOS之解决崩溃Collection <;__NSArrayM: 0xb550c30>; was mutated while being enumerated.
崩溃提示:Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <CAL ...
-
解决Collection <;__NSArrayM: 0x7f8168f7a750>; was mutated while being enumerated.&#39;
当程序出现这个提示的时候,是因为你一边便利数组,又同时修改这个数组里面的内容,导致崩溃,网上的方法如下: NSMutableArray * arrayTemp = xxx; NSArray * arr ...
-
reason: &#39;*** Collection <;__NSCFArray: 0x7ffa43528f70>; was mutated while being enumerated.&#39;
一,错误分析 1.崩溃代码如下: //遍历当前数组,判断是否有相同的元素 for (NSString *str in self.searchHistoryArrM) { if ([str isEqua ...
-
【转】was mutated while being enumerated 你是不是以为你真的懂For...in... ??
原文网址:http://www.jianshu.com/p/ad80d9443a92 支持原创,如需转载, 请注明出处你是不是以为你真的懂For...in... ??哈哈哈哈, 我也碰到了这个报错 . ...
-
异常Crash之 NSGenericException,NSArray was mutated while being enumerated
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NS ...
-
Objective-C Collection was mutated while being enumerated crash
Collection was mutated while being enumerated
-
[Bug]枚举数组,并找到某些元素删除
lldb报错:Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <_ ...
随机推荐
-
C/C++头文件使用 #ifndef #define #endif 的原因
背景 在编译的时候,出现"redefine"的错误,最后检查才发现对应的头文件没有写正确的预编译信息: #ifndef _HeadFileName_H #define _HeadF ...
-
#pragma 的使用
#pragma 的使用 尽管 C 和 C++ 都已经有标准,但是几乎每个编译器 (广义,包含连接器等) 扩展一些 C/C++ 关键字. 合理地应用这些关键字,有时候能使我们的工作非常方便.下面随便说说 ...
-
【活动】明星衣橱CEO林清华聊创业 | 猎云网
[活动]明星衣橱CEO林清华聊创业 | 猎云网 [活动]明星衣橱CEO林清华聊创业
-
startssl证书firefox支持配置
解决Firefox不信任StartSSL证书问题 wget http://cert.startssl.com/certs/ca.pem wget http://cert.startssl.com/ce ...
-
怎样让pl sql developer 界面视图复位
tools->preferences->user interface->appearance->reset docking工具-首选项-用户界面-外观-复位停放
-
Modbus RTU 通信工具设计(转)
Modbus RTU 通信工具设计 Modbus 是一个工业上常用的通讯协议.一种通讯约定. ModBus 协议是应用层报文传输协议(OSI 模型第7层),它定义了一个与通信层无关的协议数据单元(PD ...
-
java web 学习笔记 编码问题总结
java web 学习笔记 编码问题总结 1.非form表单中提交的中文参数---------------------------传递给Servlet服务器时,默认以iso-8859-1解码 ...
-
[BJOI2019]勘破神机(斯特林数+二项式定理+数学)
题意:f[i],g[i]分别表示用1*2的骨牌铺2*n和3*n网格的方案数,求ΣC(f(i),k)和ΣC(g(i),k),对998244353取模,其中l<=i<=r,1<=l< ...
-
监控页面后退前进,浏览器文档加载事件之pageshow、pagehide
https://www.cnblogs.com/milo-wjh/p/6811868.html http://www.runoob.com/jsref/event-onpageshow.html on ...
-
【转】“无法从http://XXX/XXX.svc?wsdl获取元数据”错误的解决方法
昨天在用IIS部署一个WCF服务时,碰到了如下错误: 理解了文档内容,但无法进行处理. - WSDL 文档包含无法解析的链接. - 下载“http://admin-pc/IISHostServic ...