Проблема в том, что вы совершенно не понимаете, что означает viewDidUnload
. viewDidUnload
вызывается, когда представление выгружается. В версиях до iOS 6, когда вы заканчивали работу с контроллером представления, его представление НЕ выгружалось. В версиях, предшествующих iOS 6, в 99 % случаев вы никогда не увидите, как выполняется viewDidUnload
, потому что представления обычно не выгружаются. В версиях до iOS 6 представления выгружались только в ответ на предупреждение о памяти, и представление не отображалось. В iOS 6 единственным изменением является то, что представления никогда не выгружаются, даже при предупреждении о памяти.
Поведение viewDidUnload
идентично в версиях до iOS 6 и iOS 6 — оно вызывается при выгрузке представления. Из-за этого вам НЕ нужно менять какой-либо код для iOS 6. Если вы это сделаете, вы сделали что-то не так.
До iOS 6 я использовал метод removeObserver NSNotification в методе viewDidUnload.
Если вы имеете в виду, что добавили наблюдателя в viewDidLoad
, то вы должны удалить его в dealloc
. В противном случае ваш код рухнет. Как я уже говорил выше, в 99% случаев в версиях до iOS 6 представления не выгружались. Типичный поток: init
-> viewDidLoad
-> dealloc
. Представление не разгружается посередине.
При желании вы также можете удалить наблюдателя в viewDidUnload
. Это хорошая идея, потому что она возвращает его в состояние до загрузки представления. Однако в этом нет строгой необходимости, потому что, когда представление загрузится снова, будет вызван viewDidLoad
, и все равно перезапишется любое состояние, которое было до этого.
Итак, ответ таков: вам не нужно ничего менять в ответ на iOS 6. Все, что вы сделали в viewDidLoad
, должно быть отменено как в viewDidUnload
(необязательно), так и в dealloc
(обязательно). Это верно как для iOS 6, так и для iOS 6.
person
newacct
schedule
20.04.2013