Утечка UINavigationController/понимание popViewController

У меня есть навигационный контроллер и табличное представление. Когда кто-то нажимает на табличное представление, я делаю следующее:

MyViewController *myViewController = [[MyViewController alloc] initWithImage:image];
[image release];
[self.navigationController pushViewController:myViewController animated:YES];
[myViewController release];

myViewController сохранит изображение.

Теперь, если я хожу туда и обратно в NavigationController, я получаю утечку, потому что каждый раз создается новый MyViewController, и, по-видимому, popViewController не выпускает myViewController.

Мой вопрос: почему popViewController не выпускает контроллер? Как мне с этим справиться? Поместите myViewController в качестве члена моего класса и проверьте, существует ли он уже, вместо того, чтобы каждый раз создавать его?

Заранее спасибо за помощь,


person Kamchatka    schedule 30.04.2010    source источник


Ответы (2)


По-видимому, проблема заключалась в том, что этот код был вызван в другом потоке, а затем этот поток должен иметь другой пул авторелиза, чтобы авторелиз работал правильно.

person Kamchatka    schedule 01.05.2010

Обычно я объявляю viewController один раз в классе, выделяю его в инициализации и нажимаю, когда это необходимо. Затем в нажатом контроллере представления я настраиваю представление в viewWillAppear:

person Cesar    schedule 01.05.2010