iOS中KVO使用理解
阿新 • • 發佈:2018-07-04
做出 serve kvo contex 基本使用 option ict oda 監聽
移除觀察者: - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;
什麽是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使用理解