1. 程式人生 > >iOS中KVO使用理解

iOS中KVO使用理解

做出 serve kvo contex 基本使用 option ict oda 監聽

什麽是KVO

KVO<NSKeyValueObserving>,是一個非正式協議,提供了一個途徑,使對象(觀察者)能夠觀察其他對象(被觀察者)的屬性,當被觀察者的屬性發生變化時,觀察者就會被告知該變化。

基本使用

添加觀察者:

- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context; 實現觀察響應方法: - (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary*)change context:(nullable void *)context;
移除觀察者: - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;

KVO 的使用與Notification非常相似,都能實現類與類之間一對多的通信。KVO是一個對象能夠觀察另外一個對象的屬性的值,並且能夠發現值的變化,適合任何類型的對象監聽另外一個任意對象的屬性的改變。比較常用來在Modal和View之間:View來監聽Modal的變化而做出更改。

優點:1.使用簡單,只需三步完成;

2.當被觀察者的對象的屬性發生改變時,自動通知相應的觀察者了;

缺點:1.只能用來對對象的屬性作出反應,而不會用來對方法或者動作作出反應;

2.觀察的屬性必須使用string來定義,編譯器不會檢測,容易出錯;

iOS中KVO使用理解