addObserver: имя
Я использую addObserver примерно так:
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(notificationReceived:) name:nil object: nil];
Все работает хорошо, но я подумал, что было бы неплохо удалить наблюдателя, когда он мне больше не нужен... Я обнаружил, что мне нужно использовать эту строку:
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"observerName" object:nil];
Проблема в том, что, когда я изменяю свою строку addObserver, чтобы включить имя, чтобы removeObserver знал, какого наблюдателя удалить, уведомления больше не будут вызываться. Эта строка запускается, но игнорируется при добавлении имени:
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(notificationReceived:) name:@"observerName" object: nil];
Я могу установить имя обратно на ноль, и оно снова работает. Кто-нибудь знает, что я здесь делаю не так?
Спасибо!
1 ответ
Я думаю, что вы можете ошибаться, как то, что значения параметров.
name:
сообщает системе, какие уведомления вы хотите получать.
self
фактический наблюдатель, поэтому, когда вы removeOberserver:self
Вы прекратите получать любые уведомления.
Вы должны еще раз внимательно прочитать документацию относительно того, какое значение имеет:
Для примера посмотрите, Как создать класс для отправки и получения событий через NSNotificationCenter в Objective-C?