Я пытался найти похожие проблемы, но не нашел хороших решений.Поэтому я надеюсь, что кто-то может мне помочь.
По сути, у меня есть утечка в этом методе, который заполняет массив объектами Card (tempArray создается и заполняется над этим циклом):
for(int i = 0; i < numberOfCards; i += 2) {
int randomNumber = (arc4random() % [tempArray count]);
NSNumber *number = [tempArray objectAtIndex:randomNumber];
[tempArray removeObject:number];
Card *card1 = [[Card alloc] initWithCategory:category andNumber:[number intValue]];
Card *card2 = [[Card alloc] initWithCategory:category andNumber:[number intValue]];
[number release];
[cards addObject:card1];
[cards addObject:card2];
}
Метод содержит немного больше логики, но я уверен, что этот цикл содержит утечку.Когда я запускаю его с помощью Инструментов, я вижу, что объекты Карты не освобождаются.В методе dealloc, который я освобождаю массив, я думал, что это также освободит объекты внутри массива?
-(void) dealloc {
[cards release];
[super dealloc];
}
Я пробовал autorelease на card1 и card2, пытался сделать их переменными класса.Но, похоже, ничто не поможет.Либо у меня утечка, либо, если я пытаюсь добавить релиз на карточку 1 или карточку 2, приложение вылетает.У кого-нибудь есть идея, что здесь не так?