kvc和kvo看上去又是兩個挺牛的單詞簡寫,kvc是key-value coding的簡寫,是鍵值編碼的意思。kvo是key-value observing的簡寫,是鍵值觀察的意思。那麼我們能拿kvc和kvo幹些什麼事呢?這兩個縮寫單詞不能否認聽起來挺高端的樣子。這兩個方法都是runtime方法,我們先來介紹kvc。
1.kvc(key-value coding)鍵值編碼
為了測試我們建立兩個測試類
測試類一:
測試類二:
(1)我們可以用鍵值編碼給對象的屬性動态指派(必須得有标準的getter和setter方法,或者用@property聲明)
我們可以調用setvalue: forkey: 方法以字元串的相識向對象發送消息,可以設定執行個體變量的值。第一個參數是要設定的值,第二個參數是執行個體變量的名稱
我們可以調用valueforkey: 來擷取執行個體變量的值,廢話少說,代碼走起:
代碼運作結果:
(2)我們可以通過鍵路徑給執行個體變量是其他類的對象指派 setvalue: forkeypath:
代碼如下: 接着上面的代碼來得,kvc的一項執行個體變量是subkvcclass的對象
上面代碼的運作結果:
kvc的基本内容概就這些吧,當然啦還有在數組中使用kvc以及kvc中的運算-集合等,不做贅述啦。
2.介紹完kvc那麼我們來介紹一下kvo,鍵值觀察
鍵值觀察是個什麼東西啊?他有什麼用啊?怎麼用?從字面意思上說鍵值觀察就是觀察屬性值的變化,也是運作時的方法,當執行個體變量改變時,系統會自動采取一些動作。
kvo使用三步走:
(1)注冊成為觀察者
(2)觀察者定義kvo的回調
(3)移除觀察者
來點實際的,還得上代碼:
kvoclass接口:
kvoclass實作
代碼說明:注冊觀察者的時候調用addobserver方法,第一個參數是觀察那個類,第二個參數是那個類中的那個屬性,第三個方法是觀察選項,第四個會傳到下面的觀察方法中
上面的代碼運作結果為: