NSnotificationCenter postNotificationName, кто является получателем? - PullRequest
1 голос
/ 11 февраля 2011

Документация http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html говорит об отправителе и имени уведомления, но где упоминается, кому отправить это уведомление?

Ответы [ 2 ]

3 голосов
/ 11 февраля 2011

Вы не публикуете уведомление напрямую кому-либо.Имя уведомления и отправитель определяют, кто получает уведомление.

Заинтересованные объекты могут подписаться на уведомление.Когда вы публикуете уведомление, все подписчики, которые прослушивают уведомление с таким именем, получат уведомление.На самом деле уведомления Какао можно настроить на двух уровнях:

  • имя уведомления (строка)
  • отправитель

Документация класса иллюстрируетэто ясно.

Вот небольшая таблица ASCII из документов, показывающая, кто получает уведомления в зависимости от того, какое имя уведомления и отправитель использовались при создании:

Notification name | Notification sender | Notification set specified
--------------------------------------------------------------------
Specified         | Specified           | Notifications with a particular name from a specific sender.
Specified         | Unspecified         | Notifications with a particular name by any sender.
Unspecified       | Specified           | Notifications posted by a specific sender.
Unspecified       | Unspecified         | All notifications.

Не указано означает нулевое значениебыло предоставлено для этого поля.

Уведомления допускают слабосвязанную конструкцию, поскольку объекты не связаны друг с другом в своих реализациях и могут работать независимо друг от друга.

1 голос
/ 11 февраля 2011

notification - механизм вещания .Начиная с документа: «Объекты регистрируются в центре уведомлений для получения уведомлений (объекты NSNotification) с использованием addObserver: selector: name: object: или addObserverForName: object: queue: usingBlock: методы».т. е. любой заинтересованный объект может зарегистрироваться как слушатель .

...