应用程序崩溃与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]; 

我不知道什么可能是错的,所以任何帮助表示赞赏。

谢谢!

+0

当您只看到“SIGABRT”且没有堆栈跟踪或异常的细节时,请在XCode中添加一个“Exception breakpoint”。详细信息在http://*.com/questions/4961770/run-stop-on-objective-c-exception-in-xcode-4 – kuba 2012-02-28 21:40:12

快速枚举时无法从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 NSMutableArrayBest way to remove from NSMutableArray while iterating?