2012-05-01 34 views
1

我看不到苹果的文档https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsnotificationcenter_Class/Reference/Reference.html为什么NSNotification第三个参数经常是object: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

观察者如何知道notificationSender,因为观察者设计模式应该将观察者与观察者分离:) – user310291

+0

@ user310291这是一个真正的问题还是讽刺性的评论? – borrrden

+0

这当然是一个真正的问题:我如何获得参考?这是否意味着我必须创建Observee实例或从某个控制器获取它? – user310291

7

当你正在看某个对象是不是零。

场景:您有两个对象,每个对象通过NSNotificationCenter触发事件。你只想接收objectA的事件。

解决方法:通过NSNotificationCenter订阅并传入objectA作为对象参数。

+0

+1我一直在想这个问题的答案:D –

相关问题