2011-07-15 52 views
6

我覺得我沒有完全理解KVO和NSNotification之間的區別......他們似乎很相似...... 您能否舉一些例子來說明何時最好使用一種方法,何時使用另一種方法?NSNotification VS KVO

我不談論綁定和IB,但我的意思是添加觀察程序在我的NSNotificationCenter或志願

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

KVO僅用於屬性,不能用於響應方法或其他操作。 NSNotification可用於方法和其他操作。見[這裏](https://blog.shinetech.com/2011/06/14/delegation-notification-and-observation/) – Honey

回答

6

志願只適用於價值,NSNotification可用於值的變化,但它可以可用於任何事物並可攜帶更大的有效載荷。

例如,您可以在文件完成下載時發佈NSNotification,並且userInfo可以包含所花費的時間,下載的字節數以及文件已保存到的文件系統路徑的長度。