1. 程式人生 > >ios多執行緒同時訪問陣列問題

ios多執行緒同時訪問陣列問題

  錯誤: <__NSArrayM: 0x96be3e0>was mutated while being enumerated.
  意思就是陣列在被一個執行緒訪問的時候,另一個數組也對它進行訪問。
  原因是這樣的,我的遊戲中,有個掉道具的系統,裡面有一個數組來儲存出來的道具,用一個計時器不停的檢測玩家是否碰到道具,但是道具還不停的出來(在主執行緒中加入)。這時,一方面是計時器執行緒定期檢測,讀寫道具陣列,另一方面是主執行緒新增道具也要讀寫道具陣列,這兩個執行緒在不特定的時刻會衝突。
  解決的方法:在次執行緒中複製一個道具陣列的副本,用副本進行遍歷檢測碰撞。

  NSArray* array=[NSArray arrayWithArray:b];

本文原發佈於鍵賞乾坤