到目前为止,我一直使用NSNotificationCenter的方法postNotification:aString object:anyObjectOfInterestForTheReceiver
。但最近我在文档中读到,object
字段应该只传递self
。是否有任何可怕的副作用我不知道,这应该让我在将来只传递self
,或者传递任何对象都可以吗?
谢谢!
到目前为止,我一直使用NSNotificationCenter的方法postNotification:aString object:anyObjectOfInterestForTheReceiver
。但最近我在文档中读到,object
字段应该只传递self
。是否有任何可怕的副作用我不知道,这应该让我在将来只传递self
,或者传递任何对象都可以吗?
谢谢!
object
传递,但是惯例是object
是“正在发出通知的东西”(并且您可以将其他相关状态放入userInfo
字典中)。self
是因为发出通知的对象通常想要引用自身。例如,如果您有许多Foo
对象,并且其中一个对象完成任务并发送通知,则观察通知的任何人都可以查看object
以查看哪个Foo
是被问及的那个。遵循此方案时,观察者还可以选择仅观察来自特定Foo
的通知。Bar
任务,然后您可以将对特定Bar
的引用作为对象发送通知。这比使用单例作为object
更有意义,因为在那里没有任何有趣的变化。object
的对象类型以及userInfo
中包含什么。如果事件确实有发送者,则非常关键。
当您注册观察器时,可以指定要观察的发送者。如果您让其他人使用您的消息,因此正确传递发送者非常重要,否则绑定到特定发送者的观察器将无法接收您的消息。