Dav*_*vid 10 cocoa binding key-value-observing nsnotification nsnotificationcenter
我想知道是否有理由在KVO和NSNotificationCenter观察中使用一个而不是另一个.性能,内存使用,速度等?
Tom*_*ing 15
这两者并不总是可以互换的.从概念上讲,KVO仅用于观察对象的属性.例如,您无法使用KVO进行替换,NSApplicationWillTerminateNotification因为它会向观察者通知发生的事件,而不是对象属性的更改.
至于性能和内存使用情况,它们都很快并且使用的内存可以忽略不计.NSNotificationQueue已经合并以阻止通知洪水.据我所知,KVO没有任何合并,这确实在一定程度上给我带来了性能问题.我正在观察数百个对象,当这些对象发生批量更新时,我会得到数百个KVO回调.这不是KVO本身的性能问题,而是由于批量更新而运行我自己的代码.
性能不是真正的问题,更多的是最适合这个问题.如果是属性更改,请使用KVO.如果不是属性更改,请根据您是需要单个观察者还是多个观察者来使用委托或通知.