我在.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'
答案 0 :(得分:0)
一种可能性是代码中的某个地方,numberStat [1]被过度释放,当你为它分配一个字符串时,CCSprite已经移动到它占用的内存中。