Имам проект, базиран на iOS 5 ARC, и имам затруднения относно това къде трябва да премахна наблюдателя за NSNotificationCenter
наблюденията, които съм регистрирал в UIViewController
. Подобни публикации в SO казват, че това трябва да се направи в метода -dealloc
. Въпреки че този метод не се изисква в ARC проекти, аз го добавих със следния код:
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
Като тест отварям UIViewController
(в рамките на UINavigationController
), правя някои неща, които задействат известията, и след това го изваждам от стека, като докосвам бутона Назад. След това отварям отново UIViewController
и правя още някои неща, за да задействам известията, но забелязвам, че всяко обратно извикване се извиква два пъти - индикация, че предишните известия не са били дерегистрирани. Повтарянето на тази процедура само кара всяко обратно извикване да бъде извиквано повече от повече пъти, така че изглежда, че те никога не се дерегистрират.
Всяка помощ ще бъде оценена!