Что-то меня озадачивает, после того как я прошел через свое приложение с помощью инструментов, это приложение UINavigationBased, оно это заметило.UINavigationController strategy (iPhone)
Каждый раз, когда клетка Tableview сливают и я делаю это:
GenericTableViewController *someViewController = [[Generic TableViewController alloc] init];
[self.navigationController pushViewController:someViewController animated:YES];
[someViewController release];
Я затем нажмите кнопку назад и посмотреть на инструменты, чтобы узнать, сколько живой экземпляры GenericTableViewController существует. Перед обратным краном есть 1, а затем - 0. Это замечательное, хорошее управление чистой памятью с помощью UINavigationController.
Однако, в других местах приложения я не использую кнопку «Назад», чтобы оставить вид, в некоторых случаяхКонтроллеры, нажимая одну из моих пользовательских кнопок, будут запускать код полностью, как указано выше, но viewController, в котором я нажал пользовательская кнопка не будет выпущена.
Полагаю, я понимаю, почему navigationController выносит решение, что я могу что-то подтолкнуть к стеку и что я вернусь позже, чтобы он сохранил контроллер в своей памяти. Это должно означать, что нажатие кнопки «назад» использует [self.navigationController popViewController]
. ОК.
Проблема в том, что каждый раз, когда я посещаю представление, которое не осталось с помощью кнопки «назад» в навигационном блоке, он не будет выпущен . Распределение подсчета в Инструментах просто увеличивается каждый раз, когда я посещаю представление, пока у меня не будет 20 объектов.
Я попытался положить [self.navigationController popViewController]
в селектор для моих пользовательских кнопок. Это означает, что я вручную выталкиваю видимый viewController, прежде чем нажимать новый на стек. Но счет распределения не падает? угадайте, что кнопка «назад» не использует эту технику в конце концов ...
Я также пробовал использовать popToViewController, так как я всегда знаю, был ли контроллер в стеке или нет. Но для использования popToViewController мне нужно сохранить ссылку для представления.
Есть ли какой-то звуковой способ сказать UINavigationController: если этот viewController находится в вашем стеке, пожалуйста, отобразите его, если нет, создайте его экземпляр, нажмите на стек и покажите его.
Проблема здесь, вероятно, в том, что не все мои навигационные функции в NavigationController полностью линейны. Мне иногда придется перейти из элемента стека нет. 2 для установки позиции №. 5, назад к 3 и т. Д.
Итак, есть ли способ сделать это, в то же время имея UINavigationController, убедившись, что вы выпустили мои viewControllers и не создавали один и тот же viewController несколько раз?
Hi ChrisB Я не думал об использовании массива viewcontrollers для проверки вручную, если мой объект находится в стеке. Правильно выполнив, я должен сделать этот тест как можно меньше. благодаря – RickiG