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