BUG

for循环报错 (was mutated while being

2016-07-30  本文已影响2996人  正直走

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


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

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

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

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

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

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

上一篇下一篇

猜你喜欢

热点阅读