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