Как добавить наблюдателя за уведомлениями в NSNotificationCenter в Objective-C?

Пользователь

от marisa , в категории: Другие , 6 месяцев назад

Как добавить наблюдателя за уведомлениями в NSNotificationCenter в Objective-C?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от shayna.buckridge , 5 месяцев назад

@marisa 

Чтобы добавить наблюдателя за уведомлениями в NSNotificationCenter в Objective-C, следуйте этим шагам:

  1. Создайте метод, который будет вызываться при получении уведомления. Этот метод должен иметь один аргумент типа NSNotification (это объект уведомления).
1
2
3
- (void)handleNotification:(NSNotification *)notification {
    // Ваш код обработки уведомления здесь
}


  1. В нужном месте вашего кода добавьте регистрацию наблюдателя для определенного уведомления. Для этого используйте метод addObserver:selector:name:object: у экземпляра NSNotificationCenter. В качестве параметров передайте объект, который будет служить вам наблюдателем (обычно это self), селектор метода, который будет вызываться при получении уведомления, имя уведомления и объект, от которого нужны только конкретные уведомления (передайте nil, чтобы получать все уведомления данного имени).
1
2
3
4
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(handleNotification:)
                                             name:@"MyNotificationName"
                                           object:nil];


  1. Ваш наблюдатель теперь будет вызван каждый раз, когда будет отправлено уведомление с указанным именем. Обязательно удалите наблюдателя, когда он больше не нужен (например, в методе dealloc):
1
[[NSNotificationCenter defaultCenter] removeObserver:self];


Помните также, что передаваемый объект в уведомление может быть использован для передачи дополнительных данных. Вы можете получить этот объект из свойства object у объекта NSNotification в вашем методе обработки уведомления:

1
2
3
4
- (void)handleNotification:(NSNotification *)notification {
    id myObject = notification.object;
    // Ваш код обработки уведомления здесь
}