2012-05-01 2 views
1

я не могу видеть объяснение 3-го объекта аргумента в яблочном доке https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsnotificationcenter_Class/Reference/Reference.htmlПочему третий аргумент NSNotification часто является объектом: nil?

Во всех примерах, как этот How to create a class to send and receive events through NSNotificationCenter in Objective-C? он является нулевым

Никто не объясняет: так почему объект: ноль?

Когда это не ноль?

ответ

4

Это не ноль, когда вам нужно знать, какой объект отправил уведомление. Посмотрите на -(void)addObserver:(id)notificationObserver selector:(SEL)notificationSelector name:(NSString *)notificationName object:(id)notificationSender

notificationSender

объект, уведомления наблюдатель хочет получить; то есть только уведомления, отправленные этим отправителем, доставляются наблюдателю.

Если вы передадите ноль, центр уведомлений не использует отправителя уведомления, чтобы решить, передавать ли его наблюдателю.

(из той же NSNotificationCenter ссылки вы связаны)

+0

Как наблюдатель знает уведомление, поскольку шаблон проектирования Observer должен отделять наблюдателей от наблюдателя :) – user310291

+0

@ user310291 Это настоящий вопрос или саркастический комментарий? – borrrden

+0

Это, конечно, вопрос: как мне получить ссылку? Означает ли это, что я должен создать экземпляр Observee или получить его от какого-то контроллера? – user310291

7

Это не ноль, когда вы смотрите какой-либо объект.

Сценарий: у вас есть два объекта, каждый из которых проходит через NSNotificationCenter. Вы хотите получать события только для объекта A.

Решение: Подпишитесь через NSNotificationCenter и передайте объект ObjectA в качестве параметра объекта.

+0

+1 за ответ, который я все время интересовался: D –

 Смежные вопросы

  • Нет связанных вопросов^_^