Objective c NSV通知与KVO

Objective c NSV通知与KVO,objective-c,swift,cocoa,nsnotificationcenter,key-value-observing,Objective C,Swift,Cocoa,Nsnotificationcenter,Key Value Observing,我觉得我不完全理解KVO和NSO之间的区别。。。他们看起来很相似。。。 你能举例说明什么时候最好使用一种方法,什么时候最好使用另一种方法吗 我不谈论Bind和IB,但我的意思是使用NSNotificationCenter或KVO在代码中以编程方式添加观察者 [self.preferenceController addObserver:self forKeyPath:@"color"

我觉得我不完全理解KVO和NSO之间的区别。。。他们看起来很相似。。。 你能举例说明什么时候最好使用一种方法,什么时候最好使用另一种方法吗

我不谈论Bind和IB,但我的意思是使用NSNotificationCenter或KVO在代码中以编程方式添加观察者

[self.preferenceController addObserver:self 
                                    forKeyPath:@"color" 
                                       options:NSKeyValueObservingOptionOld 
                                       context:@"Color-change"
];

KVO只对值起作用,NSNotification可以用于值更改,但它可以用于任何事情,并且可以承载更大的负载


例如,您可以在文件完成下载时发布NSNotification,userInfo可以包含所用时间的长度、下载的字节数以及文件保存到的文件系统路径。

KVO仅用于属性,不能用于响应方法或其他操作。NSNotification可用于方法和其他操作。看见