2012-04-18 3 views
0

У меня есть 7 меток CCLabelAtlas, объявленных в файле .h, как это CCLabelAtlas *numberStat[7]. Тогда я инициализируется их в цикле в .m файл:Почему 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

Как я могу убедиться, что он не будет выпущен? Я уже заявил об этом с помощью 'keep'. – Liuhu

Смежные вопросы