我对iOS很陌生,我不知道如何找到像JAVA这样体面的堆栈跟踪,所以我只能找到它崩溃的原因,“sigabrt”。
我知道这与我刚添加的代码有关。
-(void) clearGame {
for (CCSprite *sprite in placedSprites) {
if(sprite == nil) continue;
[self removeChild:sprite cleanup:NO];
[placedSprites removeObject:sprite];
}
placedSprites = [[NSMutableArray alloc] initWithCapacity:1000];
}
我将其添加到的类是cocos2d中的一个层。在它的init方法中,我有
placedSprites = [[NSMutableArray alloc] initWithCapacity:1000];
我不知道会出现什么问题,所以感谢任何帮助。
谢谢!
答案 0 :(得分:7)
快速枚举时,您无法从NSMutableArray
移除对象(请参阅documentation)。
您可以将对象(应该删除)添加到单独的NSMutableArray
,并从“main”数组中删除此数组中的对象:
NSMutableArray *discardedItems = [NSMutableArray array];
SomeObjectClass *item;
for (item in originalArrayOfItems) {
if ([item shouldBeDiscarded])
[discardedItems addObject:item];
}
[originalArrayOfItems removeObjectsInArray:discardedItems];
另见Removing object from NSMutableArray和Best way to remove from NSMutableArray while iterating?。