应用程序崩溃与NSMutableArray
问题描述:
我很新的iOS,我不知道如何找到像JAVA像样的堆栈跟踪,所以我可以找到它为什么它崩溃是“sigabrt”。应用程序崩溃与NSMutableArray
我知道它与我刚刚添加的这段代码有关。
-(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];
我不知道什么可能是错的,所以任何帮助表示赞赏。
谢谢!
答
快速枚举时无法从NSMutableArray
中删除对象(请参见documentation)。
您可以在对象(应删除)添加到一个单独的NSMutableArray
并从你的“主”数组中删除此数组对象:
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?。
当您只看到“SIGABRT”且没有堆栈跟踪或异常的细节时,请在XCode中添加一个“Exception breakpoint”。详细信息在http://stackoverflow.com/questions/4961770/run-stop-on-objective-c-exception-in-xcode-4 – kuba 2012-02-28 21:40:12