【问题标题】:App Crashing with NSMutableArray应用程序崩溃与 NSMutableArray
【发布时间】:2012-03-18 09:06:48
【问题描述】:

我对 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];

我不知道可能出了什么问题,因此非常感谢您的帮助。

谢谢!

【问题讨论】:

标签: ios cocos2d-iphone


【解决方案1】:

您无法在快速枚举时从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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    相关资源
    最近更新 更多