ViewController никогда не освобождается - PullRequest
1 голос
/ 27 декабря 2011

По моему мнению, myViewController должен быть освобожден примерно в то время, когда я возвращаюсь к корневому контроллеру представления со следующим кодом, но я никогда не вижу сообщения освобождения, получающего NSLogged.

Если это должно работать, тогдаКакую проблему я могу найти в классе myViewController, который может вызвать его освобождение, когда я popToRootViewController?

Спасибо.

В моем tableView вызывается следующее:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

MyViewController *vc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];

[self.navigationController pushViewController:vc animated:YES];

[vc release];
}

ОБНОВЛЕНИЕ:

Этот код был идеальным, но это было неэффективное управление памятью в моих контроллерах пользовательского представления, которое не вызывало ни того, ни другого.У меня были некоторые сохраненные свойства, которые должны были быть назначены вместо этого (или, по крайней мере, я так решил).Подробности смотрите в комментариях.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2013

@ JaySmith02 прав

это было плохое управление памятью в моих пользовательских контроллерах представления, которое не вызвало ни то, ни другое. У меня были некоторые сохраненные свойства, которые должны были быть назначены вместо (или, по крайней мере, я так решил)

В моем случае виновник был

@property (nonatomic, retain) id<TTSlidingPagesDataSource> dataSource;

С моей точки зрения Контроллер, когда я писал

slidingPages.dataSource = self

Я думаю, dataSource сохранил мой viewController и сделал круговое удержание. «Деллок» моего viewController никогда не вызывали.

Примечание: При ARC dealloc вызывается. Разница в том, что вы не можете позвонить [super dealloc]

Решение:

@property (nonatomic, assign) id<TTSlidingPagesDataSource> dataSource;
0 голосов
/ 27 декабря 2011

Когда вы используете poptoviewcontroller, метод dealloc вызовет самый верхний контроллер представления в контроллере навигации. Вы можете поместить точку останова в метод dealloc вашего текущего контроллера представления, и когда вы вызываете popviewcontroller, тогда вызывается ваш метод dealloc и освобождает все вещи / переменные, которые вы создали в вашем контроллере представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...