我正在开发一款适用于iPhone的游戏,其中我有2个阵列。
在游戏中“生活”的对象之一,当这些对象“死亡”时,它们被放置在另一个阵列中,以便在第一个循环结束时从第一个中移除。
这是必要的,因为如果对象在循环中死亡并且它立即从第一个数组中删除,则索引将丢失,并且有时会提供无效的地址访问。
然后我有一个NSMutableArray,它包含要从活动对象数组中删除的对象。
在要删除对象的数组中,我不断添加和删除项目。有时当我使用带有要移除的项的数组的objectAtIndex时,它会重新调用其他对象。
例如,在第一时间_enemiesToRemove
有2个对象:
([0]-> 0x0a8b5120, [1]->0x18f3a090)
for(int i = [_enemiesToRemove count] - 1; i >= 0 ; i--){
fish = [_enemiesToRemove objectAtIndex:i];
[self removeEnemy:fish];
}
然后
int i = [_enemiesToRemove count] - 1
给出i = 1,但是当它正在进行时
[_enemiesToRemove objectAtIndex:i]
它正在返回地址为0xbfffcd58的其他对象,它应该是[1] - > 0x18f3a090
这里发生了什么,有人知道吗?它永远不会发生。它是随机发生的。