KVC/KVO

1、KVC簡介
全稱是Key-value coding,翻譯成鍵值編碼。顧名思義,在某種程度上跟map的關係匪淺。它提供了一種使用字符串而不是訪問器方法去訪問一個對象實例變量的機制。

KVC的用法: 簡單來說就是給對象的私有屬性賦值.
常用到兩個方法:

    // 層級結構較淺時使用
    - (id)valueForKey:(NSString *)key;
    - (void)setValue:(id)value forKey:(NSString *)key;
    // 層級結構較深時使用
    - (id)valueForKeyPath:(NSString *)keyPath;
    - (void)setValue:(id)value forKeyPath:(NSString *)keyPath;

應用: 更改系統控件的一些私有屬性, 點語法無法獲取, 採用KVC解決了我們的難題.

2、KVO簡介
全稱是Key-value observing,翻譯成鍵值觀察。提供了一種當其它對象屬性被修改的時候能通知當前對象的機制。KVO機制適合實現model和controller類之間的通訊。

KVO的用法: 簡單來說就是動態監聽屬性變化.
常用到的方法:

// 添加監聽者
- (void)addObserver:(id)object
         forKeyPath:(NSString *)keyPath
            options:(NSKeyValueObservingOptions)options
            context:(void *)context;

// 監聽方法, 所有KVO統一調用這個方法, 最好判斷對象類型
// 使用[object isKindOfClass: []]進行判斷
- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context;

 // 記得在dealloc方法中移除監聽                      
- (void)removeObserver:(NSObject *)observer
            forKeyPath:(NSString *)keyPath;

應用:
圖片/視頻下載時監聽進度, 製作進度條;
界面下拉刷新.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章