Извинения за большой текст «o», но я начинаю играть, используя UINavigationController как часть приложения, которое я пишу, Мне просто интересно, как я должен обрабатывать добавление контроллеров представлений в UINavigationController, и когда (если когда-либо) я должен их освободить.UINavigationController - Когда выпустить толкаемые контроллеры просмотра и т. Д.
Как я вижу, есть два возможных подхода при добавлении контроллера вида:
Есть переменная экземпляра для каждого контроллера представления в классе управляющего. Инициализируйте его (если переменная экземпляра равна нулю), прежде чем нажимать его на контроллер nav. Затем выпустите контроллер представления в методе dealloc управляющего класса, если он не равен нулю.
Создайте контроллер вида в виде локальной переменной внутри метода и нажмите его на контроллер навигации, прежде чем немедленно его освободить.
Однако я не уверен в действительности каждого из них. (Моя внутренняя чувствительность заключается в том, чтобы идти с подходом с переменным экземпляром, но, возможно, это связано с отсутствием понимания с моей стороны.)
Копаем немного глубже, я подозреваю, что мое замешательство связано с тем, я не понимаю, отвечаю ли я за то, что я распоряжаюсь контроллерами представлений, которые выталкиваются в стек контроллера диспетчера, или же он сам будет их уничтожать, когда они выскочат из стека контроллера представления. (например: когда пользователь нажимает кнопку «назад».)
Если это первый, то я вижу, что мне нужно будет использовать подход переменной экземпляра и реализовать методы UINavigationControllerDelegate в объекте управления, чтобы определить, когда Я должен освободить и проигнорировать каждый контроллер вида и т. Д.
Наконец (для бонусных точек в загробной жизни), как вы можете легко определить, будет ли метод увеличивать счетчик удержания одного из его параметров? (Там, кажется, не будет каких-либо подсказки в документации, но, возможно, я что-то очевидное отсутствует). Например, когда я использую что-то вдоль линий ...
[[self navigationController] pushViewController:exampleVC animated:YES];
... это будет увеличить количество удержаний на контроллере представления? (Еще раз, моя кишка чувствует, что она должна, но это примерно так же полезно, как шоколадная пожарная охрана в эти опасные времена и т. Д.)
Заранее спасибо.
Спасибо за эвристику - я никогда не думал об этом в этих терминах. – 2010-11-24 11:18:42