2012-02-16 37 views
0

以我的cocos2d遊戲我有一個一些球必須被破壞,並且有2個線程,其是同時彼此,第一線程添加球到的NSMutableArray,和第二螺紋迭代通過這個數組和調用每個球,我已經把與陣列的每個操作在同步塊與@synchronized(陣列)釋放的方法,但其不影響和在同步塊應用每次拋出異常__NSArrayM物而被枚舉突變: 也許有其他方式同步線程?爲Cocos2D中應用線程同步

+0

你可以發佈迭代/添加的實際代碼? – Tudor 2012-02-16 16:23:10

回答

1

既然你從一個線程添加對象和迭代與另一個線程在同一陣列上,似乎毫無意義,以多線程代碼的這一部分。

的原因是,你can not modify an array while iterating過它,無論你在同一個線程或多個線程內做到這一點。

你很可能會通過使用兩個陣列,每個線程,每個線程perfoming相同的任務得到更好的結果:既要添加的對象,那麼這兩個迭代在他們的對象的一半一半。如何分割對象取決於您,它可能基於屏幕座標(屏幕分割)或其他一些條件(即每個線程處理的對象的平衡數量)。

+0

我想問一個關於cocos2d的問題,它是如何處理日程安排的?因爲這個問題主要是在iPhone 4上造成的,但在iPhone 3G上它工作正常,在遊戲中還有一個Box2d,有時候我在ContactListener方法上更改了這個數組,但在這個方法中,我也把它放到同步塊中,cocos2d使用單線程的所有日程安排?我不手動創建一個線程,我只假設,如果在3g它的工作似乎在4有多個線程來處理schedlues和它崩潰的應用程序 – 2012-02-18 12:07:25