应用程序崩溃与NSMutableArray

Aus*_*tin 2 cocos2d-iphone ios

我对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];
}
Run Code Online (Sandbox Code Playgroud)

我正在添加它的类是cocos2d中的一个层.在它的init方法中,我有

placedSprites = [[NSMutableArray alloc] initWithCapacity:1000];
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

til*_*ilo 7

您无法从NSMutableArray快速枚举中删除对象(请参阅文档).

您可以将对象(应该删除)添加到单独NSMutableArray的对象中,并从"main"数组中删除此数组中的对象:

NSMutableArray *discardedItems = [NSMutableArray array];
SomeObjectClass *item;

for (item in originalArrayOfItems) {
    if ([item shouldBeDiscarded])
        [discardedItems addObject:item];
}

[originalArrayOfItems removeObjectsInArray:discardedItems];
Run Code Online (Sandbox Code Playgroud)

另请参阅从NSMutableArray中删除对象以及迭代时从NSMutableArray中删除的最佳方法?.


归档时间:

查看次数:

854 次

最近记录:

14 年,3 月 前