Я получаю странный случай чрезмерного количества удержаний для контроллера представления, который я загружаю при нажатии кнопки.
Это код:
-(IBAction)new
{
if (!viewSpace)
viewSpace = [[ViewSpace alloc] initWithNibName:@"ViewSpace" bundle:nil];
viewSpace.delegate = self;
viewSpace.view.frame = CGRectMake(0, 0, viewSpace.view.frame.size.width, viewSpace.view.frame.size.height);
[self presentModalViewController:viewSpace animated:YES];
NSLog(@"Count Retain: %d",[viewSpace retainCount]);
}
-(void)viewSpaceWasDissmissed:(id)sender
{
[self dismissModalViewControllerAnimated:YES];
[viewSpace release];
NSLog(@"Count Retain: %d",[viewSpace retainCount]);
}
Когда IBAction New выполняется в первый раз, счетчик удержания равен 5, когда только что создается. (Должно быть 1).
Когда объект ViewSpace должен быть выгружен, вызывает функцию viewSpaceWasDismissed, чтобы удалить модальное представление и освободить предыдущий объект.
Проблема в том, что счетчик сохраненных данных никогда не достигает 0, а метод dealloc ViewSpace никогда не вызывается, вызывая утечки памяти.
Мой вопрос: как возможно, что недавно созданный ViewController имел 5 сохранений? Я убедился, что это никогда не создавалось раньше.
Спасибо.
retainCount
совершенно бесполезен. Вы тратите время на размышления об этом. - person bbum   schedule 25.01.2012retainCount
вам не скажет. Используйте инструмент Allocations и включите отслеживание событий сохранения. Затем посмотрите на все события сохранения и выясните, какое из них не сбалансированоrelease
. - person bbum   schedule 26.01.2012