KVC和KVO

KVC

查找規(guī)則:

先查找和直接寫入的字符串相同的成員變量,如果找不到就找以下劃線開頭的成員變量。

常見用處:

  • 對私有變量進(jìn)行賦值;
  • 字典轉(zhuǎn)模型。

注意點(diǎn):

  • 字典轉(zhuǎn)模型的時候,字典中的某一個key一定要在模型中有對應(yīng)的屬性。
  • 如果一個模型中包含了另外的模型對象,是不能直接轉(zhuǎn)化成功的。
  • 通過kvc轉(zhuǎn)化模型中的模型,也是不能直接轉(zhuǎn)化成功的。

KVO

底層原理

當(dāng)一個類的屬性被觀察的時候,系統(tǒng)會通過runtime動態(tài)的創(chuàng)建一個該類的派生類,并且會在這個類中重寫基類被觀察的屬性的setter方法,而且系統(tǒng)將這個類的isa指針指向了派生類,從而實(shí)現(xiàn)了給監(jiān)聽的屬性賦值時調(diào)用的是派生類的setter方法。重寫的setter方法會在調(diào)用原setter方法前后,通知觀察對象值得改變。

Delegate、Notification、KVO優(yōu)缺點(diǎn)

delegate、notification、KVO各優(yōu)缺點(diǎn)

參考

KVC和KVO
KVC官方文檔
KVO官方文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • KVC 什么是KVC KVC是Key-Value-Coding 的簡稱。 KVC是一種可以直接通過字符串的名字ke...
    Jack_deng閱讀 1,188評論 0 0
  • 目錄:1.KVC用法;2.KVC和對象的setter、getter方法的區(qū)別;3.key和keyPath的區(qū)別;4...
    倫倫子_f7b3閱讀 686評論 0 1
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,658評論 1 32
  • KVC是KVO的技術(shù)基礎(chǔ),他們都是利用了OC的動態(tài)性。 概念 KVC NSKeyValueCoding[https...
    kyson老師閱讀 3,051評論 0 50
  • 本篇采用簡單的例子,來介紹 iOS 中的 KVC 和 KVO 的用法和實(shí)現(xiàn)原理。 一、KVC 1. KVC是什么 ...
    雷曼同學(xué)閱讀 955評論 0 4

友情鏈接更多精彩內(nèi)容