KVO和NSNotificationCenter的正确用法和区别是什么?

时间:2014-11-06 14:34:51

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

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

1 个答案:

答案 0 :(得分:6)

KVO 专门用于更改properties

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

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

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

每当使用somethingHappenedSomewhere:作为参数调用方法NSNotification时。