2012-04-18 51 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