2012-04-18 57 views
0

我有7个CCLabelAtlas标签在.h文件中声明,像这样CCLabelAtlas *numberStat[7]。然后,我将它们初始化为.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

我如何确保它不会被过度释放?我已经用'retain'声明了它。 – Liuhu 2012-04-22 21:52:27