for循环报错 (was mutated while being enumerated.')

 今天遇到一个我自己不常见的问题随手记一下如下:


*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x7ae683e0> was mutated while being enumerated.'

查资料原因是在遍历时修改了数组原来数组及在同一时间,不同的线程同时读取和修改了数组,总结两种比较直接的解决方法

第一种是可以通过或arrayWithArray:或先定义数组再重新定义一个新的一样的数组,及将需要遍历的和需要的删除的数组分开如下:

上面的方法如果只需匹配一个值的请情况下可以在删除后跳出循环也可以


第二种是通过使用block块遍历原数组如下:

还有说用线程操作,个人感觉不太现实或许是我没有想起来,如果有别的方法还望指教。另外只是随手记一下,和大家分享,可指教勿喷,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容