2012-04-18 8 views
0

私は、このCCLabelAtlas *numberStat[7]のように.hファイルで宣言された7つのCCLabelAtlasラベルを持っています。次に、.mファイルのforループで初期化しました。なぜCCLabelAtlas [1]が更新を拒否するのですか?

for (int i = 1; i <=7; i++) { 
    NSString* statName = [NSString stringWithFormat @"Number %d", i]; 
    numberStat[i] = [[CCLabelAtlas labelWithString: [self loadThisValue:statName] charMapFile:@"digitalNumbers.png" itemWidth:26 itemHeight:37 startCharMap:'0'] retain]; 
    [self addChild: numberStat[i]]; 
} 

ラベルを更新しようとすると問題が発生します。 2から7までうまく更新できますが、numberStat [1]の文字列(numberStat[1].string = @"111";)を更新しようとするとクラッシュします。まったく同じコードが2〜7で機能します。

ここでクラッシュログです:

-[CCSprite setString:]: unrecognized selector sent to instance 0x897cbd0 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CCSprite setString:]: unrecognized selector sent to instance 0x897cbd0' 

答えて

0

一つの可能​​性は、どこかにあなたのコードでは、numberStatは、[1]、CCSprite解放過剰であること、および時間によって、あなたがそれに文字列を割り当てるために来ているということですそれが占有していたメモリに移動しました。

+0

どのように私はそれが過剰にリリースされないことを確認することができますか?私はすでに「保持」と宣言していました。 – Liuhu

関連する問題