在我的 iphone 游戏中,在 ios 4.0 模拟器上运行时一切正常。但是,当使用 5.0 模拟器或 5.0+ 设备运行时,应用程序在第一级崩溃并留下错误:
由于未捕获的异常“NSGenericException”而终止应用程序,原因:
*** Collection <__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];
请帮忙,这几天一直在想办法。