OK. Я скажу это снова. Accessors ваши друзья. Используй их. Всегда. ПРИМЕЧАНИЕ. Да, я знаю, что Apple рекомендует не использовать их в init и dealloc, но через 15 лет это НИКОГДА не вызывало проблем для меня, а НЕ их использование. Как и в этом случае. Есть моменты, когда вы НЕ хотите их использовать, но они намного меньше, чем те, которые вы действительно хотите использовать.)
В вашем методе buttonText:
- (void)buttonText:(int)number
{
lifeChange = [NSNumber numberWithInt:number];
NSString *text = [[NSString alloc] initWithFormat:@"%d", number];
CCLabel *label = [CCLabel labelWithString:text fontName:@"Times New Roman" fontSize:20];
label.position = CGPointMake(35, 20);
[self addChild:label];
}
Вы должны сделать:
- (void)buttonText:(int)number
{
NSString *text = [[[NSString alloc] initWithFormat:@"%d", number] autorelease];
CCLabel *label = [CCLabel labelWithString:text fontName:@"Times New Roman" fontSize:20];
[self setLifeChange:[NSNumber numberWithInt:number]];
label.position = CGPointMake(35, 20);
[self addChild:label];
}
Взгляните на свой код и поймите, как нужно распределять / копировать / сохранять балансировку с выпуском / автоматическим выпуском. На первый взгляд, вы действительно запутались в управлении памятью.