Ответ 1
Согласно Apple, они улучшили управление внутренней памятью для просмотров, что достигается за счет уничтожения материала в viewWill/DidUnload
. Кроме того, у них есть данные, свидетельствующие о том, что многие приложения вылетают из строя, потому что приложения неправильно обрабатывают эти уведомления и делают "другие" вещи, не связанные с разгрузкой представления.
Наконец, предупреждение о памяти теперь проверяется как первое и единственное предупреждение, которое вы получите до того, как ваше приложение будет завершено из-за низкой памяти, поэтому на самом деле это место для обработки проблем с памятью.
Итак, в основном, просто удалите ваши методы viewWillUnload
и viewDidUnload
. Устранение проблем с памятью в didReceiveMemoryWarning
и любом другом диспетчере управления просмотром в соответствующих местах.
ИЗМЕНИТЬ
Могу я спросить: что это за "подходящие места"? Я использовал ViewdidUnload в некоторых ситуациях, когда вид [Will/Did] Disappear был не совсем адекватно. Как и дальше по навигации стек контроллера. Не могли бы вы подробнее остановиться на этом? - Dan1one
Это зависит. Я знаю, что не то, что вы хотите услышать, но это правда: -)
В общем, вам следует избегать асимметрии. Таким образом, вы должны "отменить" операцию, используя симметричный метод, из которого вы "сделали" оригинал. В общем, вы должны иметь возможность выполнять все операции типа viewDidUnload
в didReceiveMemoryWarning
и dealloc
.
Это действительно не должно вызывать изменения, потому что вам все равно пришлось дублировать большую часть этого кода в обоих этих местах.
Я не знаю, что вы подразумеваете под "продвижением вниз по стеку контроллера навигации", поэтому вам нужно прояснить этот пример, чтобы я мог дать полезный ответ.
Одной из проблем с использованием viewDidDisappear
и viewDidAppear
было то, что было трудно понять, когда появилось представление, потому что оно действительно появлялось, или потому, что вид, который был поверх него, исчезал... вызывая он появится.
Эти части API должны помочь вам решить эти проблемы:
- (BOOL)isMovingFromParentViewController
- (BOOL)isMovingToParentViewController
- (BOOL)isBeingDismissed
- (BOOL)isBeingPresented