【iOS 底層原理】KVC 本質(zhì)原理

KVC 使用

KVC的全稱是Key-Value Coding,俗稱“鍵值編碼”,可以通過一個(gè)key來訪問某個(gè)屬性

常見的API有

  • (void)setValue:(id)value forKeyPath:(NSString *)keyPath;
  • (void)setValue:(id)value forKey:(NSString *)key;
  • (id)valueForKeyPath:(NSString *)keyPath;
  • (id)valueForKey:(NSString *)key;

setValue:forKey:的原理

image.png

注:accessInstanceVariablesDirectly 方法的默認(rèn)返回值是YES

setValue:forKey: 方法會(huì)先調(diào)用 setKey: 方法,如果沒有,則調(diào)用帶下劃線的 _setKey: 方法。如果這兩個(gè)方法都不存在,則調(diào)用 accessInstanceVariablesDirectly,accessInstanceVariablesDirectly 返回 NO 則拋出異常,accessInstanceVariablesDirectly 返回 YES,則按照 _key、_isKey、key、isKey 的順序查找成員變量,找到成員變量,則直接賦值。

valueForKey:的原理

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

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

  • KVC(Key-value coding)鍵值編碼,單看這個(gè)名字可能不太好理解。其實(shí)翻譯一下就很簡(jiǎn)單了,就是指iO...
    朽木自雕也閱讀 1,698評(píng)論 6 1
  • 源碼加翻譯 #import <Foundation/NSArray.h> #import <Foundation/...
    CAICAI0閱讀 1,232評(píng)論 0 50
  • KVC KVC定義 KVC(Key-value coding)鍵值編碼,就是指iOS的開發(fā)中,可以允許開發(fā)者通過K...
    暮年古稀ZC閱讀 2,288評(píng)論 2 9
  • KVC(Key-value coding)鍵值編碼,單看這個(gè)名字可能不太好理解。其實(shí)翻譯一下就很簡(jiǎn)單了,就是指iO...
    黑暗中的孤影閱讀 50,256評(píng)論 74 441
  • KVC KVC定義 KVC(Key-value coding)鍵值編碼,就是指iOS的開發(fā)中,可以允許開發(fā)者通過K...
    jackyshan閱讀 52,309評(píng)論 9 198

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