到目前为止,我一直在使用 NSNotificationCenter 和方法 postNotification:aString object:anyObjectOfInterestForTheReceiver
。但最近我在文档中读到,object
字段应该只传递给 self
。是否有任何我不知道的可怕副作用应该说服我将来只传递 self
,或者传递任何对象都可以吗?
谢谢!
最佳答案
您可以将任何对象作为通知的 object
传递,但约定是 object
是“正在执行通知的事物”(并且您将userInfo
字典中的其他相关状态)。
它主要是 self
的原因是因为通常执行通知的对象通常想要引用自己。这样,例如,如果您有许多 Foo
对象,并且其中一个完成了一项任务并发送了通知,那么任何观察到该通知的人都可以通过查看 object
来了解Foo
是有问题的那个。当您遵循此方案时,观察者还可以选择仅观察来自特定 Foo
的通知。
在发布通知时使用“self”以外的东西也是合理的(尽管不太常见)——假设您“代表”另一个对象发送通知。例如,您可以是一个完成 Bar
任务的单例 Controller 对象,并且您可以将对特定 Bar
的引用作为对象发送通知。这比使用单例作为 object
更有意义,因为那里没有有趣的差异。
同样,这只是一个(有用的)约定。当你编写自己的通知时,你可以定义通知的“契约”,即名称,使用什么样的对象作为 object
,以及 userInfo 中的内容
。
关于objective-c - NSNotification : does the object property have to be self?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779220/