美文网首页BUG
for循环报错 (was mutated while being

for循环报错 (was mutated while being

作者: 正直走 | 来源:发表于2016-07-30 12:00 被阅读2996次

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


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

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

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

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

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

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

    相关文章

      网友评论

      • smile刺客:是在一个线程下操作的 我打印了线程,应该是其他原因
      • Liberalism:你的图全挂了
        Liberalism:@正直走 主要是昨天遇到了这个问题,在寻求解决问题方法的时候,看到了你的回答
        正直走:谢谢提醒,会修改后再发。
      • 知交:简单直观,
        正直走:谢谢!

      本文标题:for循环报错 (was mutated while being

      本文链接:https://www.haomeiwen.com/subject/ladwdttx.html