首页 > ios > ios多线程同时访问数组出现was mutated while being enumerated

ios多线程同时访问数组出现was mutated while being enumerated

  错误: <__NSArrayM: 0x96be3e0>was mutated while being enumerated.
  意思就是数组在被一个线程访问的时候,另一个数组也对它进行访问。
  原因是这样的,我的游戏中,有个掉道具的系统,里面有一个数组来保存出来的道具,用一个计时器不停的检测玩家是否碰到道具,但是道具还不停的出来(在主线程中加入)。这时,一方面是计时器线程定期检测,读写道具数组,另一方面是主线程添加道具也要读写道具数组,这两个线程在不特定的时刻会冲突。
  解决的方法:在次线程中复制一个道具数组的副本,用副本进行遍历检测碰撞。
  NSArray* array=[NSArray arrayWithArray:b];

  1. 还没有评论
评论提交中, 请稍候...

留言


可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks