为什么CCLabelAtlas [1]拒绝更新?

时间:2012-04-18 13:16:22

标签: objective-c cocos2d-iphone

我在.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'

1 个答案:

答案 0 :(得分:0)

一种可能性是代码中的某个地方,numberStat [1]被过度释放,当你为它分配一个字符串时,CCSprite已经移动到它占用的内存中。