【问题标题】:What are the correct uses and differences of KVO and NSNotificationCenter? [duplicate]KVO和NSNotificationCenter的正确用法和区别是什么? [复制]
【发布时间】:2014-11-06 14:34:51
【问题描述】:

KVO 和 NSNotificationCenter 都可以处理值的变化。他们之间有什么区别?它们的正确用法是什么?

【问题讨论】:

  • 我的回答够好吗?你还有未解决的问题吗? :)

标签: ios macos cocoa nsnotificationcenter key-value-observing


【解决方案1】:

KVO专门针对properties的变化。

NSNotificationCenter 可以在更广泛的上下文中用于各种通知,而不仅仅是那些处理属性值更改的通知。另外,您可以创建自己的通知,以发送给以前作为观察者订阅此通知的任何其他感兴趣的对象。

要创建您的自定义通知,请使用: [[NSNotificationCenter defaultCenter] postNotificationName:@"somethingHappened" object:nil];

然后另一个类可以使用以下代码订阅此通知: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingHappenedSomewhere:) name:@"somethingHappened" object:nil];

只要方法somethingHappenedSomewhere: 将被调用,NSNotification 作为参数。

【讨论】:

  • 扩展这个答案...NSNotifications 也可以跨应用程序发送。我喜欢认为通知在某些对象可能会或可能不会监听更改时很有用,但广播该更改很重要。
  • 好吧,这不是真的吗?那将如何工作?应用 A 发送通知,应用 B 在后台接收通知并随后执行自定义操作?这绝对不可能,...也许您在谈论UILocalNotification...?!这些又是另一回事了。
  • 对不起,不清楚,我指的是 OS X 上的 NSDistributedNotificationCenter,我猜这在 iOS 上不可用。
  • 好吧,谢谢你的提示!!! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2015-11-23
  • 2013-02-13
  • 2011-04-26
  • 2016-09-24
  • 1970-01-01
相关资源
最近更新 更多