天天看點

KVC & KVO

        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方法,第一個參數是觀察那個類,第二個參數是那個類中的那個屬性,第三個方法是觀察選項,第四個會傳到下面的觀察方法中

    ​  上面的代碼運作結果為: