Уведомление
Уведомление является сообщением, отправленным в один или несколько объектов наблюдения сообщить им о событии в программе. Механизм уведомления Какао следует за моделью трансляции. Это - путь к объекту, инициирующему или обрабатывающему событие программы для передачи с любым числом объектов, хотящих знать о том событии. Эти получатели уведомления, известного как наблюдатели, могут скорректировать свое собственное появление, поведение, и утвердить в ответ на событие. Отправка объекта (или регистрация) уведомление не должно знать, каковы те наблюдатели. Уведомление является таким образом мощным механизмом для достижения координации и сцепления в программе. Это сокращает потребность в сильных зависимостях между объектами в программе (такие зависимости сократили бы возможность многократного использования тех объектов). Много классов Основы, AppKit и других платформ Objective C определяют уведомления, которые Ваша программа может зарегистрировать для наблюдения.
Главная центральная часть механизма уведомления является одноэлементным объектом для каждого процесса, известным как центр уведомления (NSNotificationCenter
). Когда объект отправляет уведомление, он переходит к центру уведомления, действующему как своего рода информационный центр и телевизионный центр для уведомлений. Объекты, которые должны знать о событии в другом месте в регистре приложения с центром уведомления для уведомления его, они хотят быть уведомленными, когда происходит тот случай. Несмотря на то, что центр уведомления поставляет уведомление своим наблюдателям синхронно, можно отправить уведомления асинхронно с помощью очереди уведомления (NSNotificationQueue
).
Объект уведомления
Уведомление представлено экземпляром NSNotification
класс. Объект уведомления содержит несколько битов состояния: уникальное имя, объект регистрации, и (дополнительно) словарь дополнительной информации, вызванной userInfo
словарь. Когда уведомление поставлено заинтересованному наблюдателю, объект уведомления передается в как параметр метода, обрабатывающего уведомление.
Наблюдение уведомления
Для наблюдения уведомления получите одиночный элемент NSNotificationCenter
экземпляр и отправляет его addObserver:selector:name:object:
сообщение. Как правило, этот регистрационный шаг выполнен вскоре после Ваших запусков приложения. Второй параметр addObserver:selector:name:object:
метод является селектором, идентифицирующим метод, который Вы реализуете для обработки уведомления. Метод должен иметь следующую подпись:
- (void)myNotificationHandler:(NSNotification *)notif; |
В этом методе обработки можно извлечь информацию из уведомления для помощи Вам в Вашем ответе, особенно данные в userInfo
словарь (если Вы существуете).
Регистрация уведомления
Прежде, чем отправить уведомление, необходимо определить уникальную глобальную строковую константу как имя уведомления. Соглашение состоит в том, чтобы использовать два - или специализированный префикс с тремя буквами для имени, например:
NSString *AMMyNotification = @"AMMyNotication"; |
Для регистрации уведомления отправьте a postNotificationName:object:userInfo:
(или подобный), обмениваются сообщениями к одиночному элементу NSNotificationCenter
объект. Этот метод создает объект уведомления, прежде чем это отправит уведомление центру уведомления.