Какова наилучшая практика для добавления и удаления наблюдателей в/из NSNotificationCenter
?Лучшая практика для добавления/удаления наблюдателей в/из NSNotificationCenter
Я интересно, если добавление self
в качестве наблюдателя в viewDidLoad
и удаление self
в viewDidUnload
достаточно. Или, возможно, я должен удалить self
в dealloc
.
Возможно, необходимо учитывать условия низкой памяти. Я мог видеть добавление в viewDidLoad
и удаление в dealloc
проблематично: viewDidUnload
вызывается из-за низкой памяти ... тогда при отображении снова отображается viewDidLoad
... теперь self
был добавлен в качестве наблюдателя дважды без удаления (поскольку dealloc
не был вызван).
Примечание: Я рассматриваю только базовый пример, где self
относится к подклассу UIViewController
.
Интересно. Итак, в iOS 5+ то, что вызывается вместо viewDidUnload в условиях низкой памяти? – SundayMonday
'didReceiveMemoryWarning' продолжает вызываться в случае низких условий памяти. Кроме того, ознакомьтесь с [UIViewController] Apple (http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html) (в частности, раздел «Управление памятью»): Когда появляется предупреждение с низкой памятью, класс UIViewController очищает свои представления, если он знает, что он может перезагрузить или воссоздать их позже. Если это произойдет, он также вызывает метод viewDidUnload, чтобы дать вашему коду возможность отказаться от владения любыми объектами, связанными с вашей иерархией представлений. –