objective-c - NSNotification : does the object property have to be self?

标签 objective-c ios nsnotifications

到目前为止,我一直在使用 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/

相关文章:

ios - 如何使用从 Swift 到 Objective-C 的 Notification.Name 扩展?

ios - 监视NSNotifications

objective-c - NSRunningApplication 'terminated' 不可观察

iphone - ScrollView 中的 UITableView

objective-c - UISwitch 在 UIScrollView 中没有响应

ios - SwiftUI使用步进器动态添加/删除TextField

IOS Coredata 检查属性是否存在

ios - 找不到成员(member)申请

iphone - 如何在应用内购买中恢复购买?

ios - 来自网络的 NSNotifications