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

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

于 2012-04-18T21:32:33.757 回答