到目前为止,我一直在使用 NSNotificationCenter 的方法postNotification:aString object:anyObjectOfInterestForTheReceiver
。但最近我在文档中读到object
字段只能被传递self
。是否有任何我不知道的可怕副作用应该说服我只通过self
将来,或者传递任何对象都可以吗?
谢谢你!
您可以传递任何对象作为object
通知,但惯例是object
是“正在执行通知的事情”(并且您将其他相关状态放入userInfo
字典)。
究其原因,大多是self
是因为通常执行通知的对象通常想要引用自身。这样,例如,如果您有很多Foo
对象,其中一个完成了任务并发送了通知,任何观察到通知的人都可以查看object
看看哪个Foo
就是有问题的人。观察者还可以选择仅观察来自特定的通知Foo
当你遵循这个计划时。
在发布通知时使用除“自身”之外的其他内容也是合理的(尽管不太常见)——假设您“代表”另一个对象发送通知。例如,您可以是一个单例控制器对象,它完成一个Bar
任务,您可以发送包含特定任务参考的通知Bar
作为对象。这比使用单例作为更有意义object
,因为那里没有有趣的差异。
再次强调,这只是一个(有用的)约定。当你创建自己的通知时,你需要定义通知的“契约”,即名称、使用什么样的对象作为通知object
,以及里面有什么userInfo
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)