私の iPhone ゲームでは、ios 4.0 シミュレーターで実行するとすべて正常に動作します。ただし、5.0 シミュレーターまたは 5.0 以降のデバイスで実行すると、アプリが最初のレベルでクラッシュし、エラーが発生します。
キャッチされていない例外 'NSGenericException' が原因でアプリを終了しています。理由:
*** コレクション <__NSArrayM: 0x1416eea0> が列挙中に変更されました。
*** First throw call stack:
(0x1d6a052 0x20d0d0a 0x1d69c21 0x6f8e 0x8bd48 0x94020 0xba169 0xbcee4 0x85a2db 0x85a1af 0x1d3e966 0x1d3e407 0x1ca17c0 0x1ca0db4 0x1ca0ccb 0x2702879 0x270293e 0x90fa9b 0x1f31 0x1eb5 0x1)
terminate called throwing an exception(lldb)
問題をこのコードに絞り込んだと思います。問題が for ループ内のオブジェクトを削除していることは理解していますが、解決策を見つけられないようです。
これが私のコードです:
//remove the projectile
for (CCSprite *projectile in projectilesToDelete) {
[_projectiles removeObject:projectile];
[self removeChild:projectile cleanup:YES];
}
[projectilesToDelete release];
//remove the projectile
for (CCSprite *targetDel in targetsToDelete) {
targetDel.position = ccp(-2000, -2000);
[self removeChild:targetDel cleanup:YES];
[_targets removeObject:targetDel];
}
[targetsToDelete release];
助けてください、過去数日間理解しようとしてきました。