鍵值編碼KVC
KVC的操作方法由NSKeyValueCoding協議提供,而NSObject就實現了這個協議,也就是說ObjC中幾乎所有的對象都支持KVC操作,常用的KVC操作方法如下:
- 動態設置
setValue:屬性值 forKey:屬性名(用于簡單路徑)
setValue:屬性值 forKeyPath:屬性路徑(用于復合路徑,例如Person有一個Account類型的屬性,那么person.account就是一個復合屬性) - 動態讀取
valueForKey:屬性名
valueForKeyPath:屬性名(用于復合路徑)
鍵值監聽KVO
KVO其實是一種觀察者模式,利用它可以很容易實現視圖組件和數據模型的分離,當數據模型的屬性值改變之后作為監聽器的視圖組件就會被激發,激發時就會回調監聽器自身。在ObjC中要實現KVO則必須實現NSKeyValueObServing協議,不過幸運的是NSObject已經實現了該協議,因此幾乎所有的ObjC對象都可以使用KVO。
在ObjC中使用KVO操作常用的方法如下:
- 注冊指定Key路徑的監聽器: addObserver: forKeyPath: options: context:
- 刪除指定Key路徑的監聽器: removeObserver: forKeyPath
- removeObserver: forKeyPath: context:
- 回調監聽 observeValueForKeyPath: ofObject: change: context:
KVO的使用步驟也比較簡單:
通過addObserver: forKeyPath: options: context:為被監聽對象(它通常是數據模型)注冊監聽器
重寫監聽器的observeValueForKeyPath: ofObject: change: context:方法