2012-02-28 8 views
2

私はiOSにはかなり新しく、JAVAのようなまともなスタックトレースを見つける方法がわからないので、クラッシュする理由は「sigabrt」です。App 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に「例外ブレークポイント」を追加してください。詳細はhttp://stackoverflow.com/questions/4961770/run-stop-on-objective-c-exception-in-xcode-4 – kuba

答えて

7

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?を参照してください。

関連する問題