0

このように .h ファイルで宣言された 7 つの CCLabelAtlas ラベルがありますCCLabelAtlas *numberStat[7]。次に、.m ファイルの for ループでそれらを初期化しました。

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'
4

1 に答える 1

0

1 つの可能性は、コードのどこかで numberStat[1] が過剰に解放されており、それに文字列を割り当てるまでに、CCSprite が占有していたメモリに移動したことです。

于 2012-04-18T21:32:33.757 に答える