KVC實現原理簡介

2022-03-30 17:39:52 字數 755 閱讀 4769

kvc,全稱:key-value-coding。

kvc運用了isa-swizzling技術。isa-swizzling就是型別混合指標機制。kvc主要通過isa-swizzling來實現其內部定位查詢。isa指標(is a kind of),指向維護分發表的物件的類。該分發表實際上包含了指向實現類中的指標和其他資料。

比如:8

[dic setvaule:@"

zhangsan

" forkey:@"

name

"];

當執行的時候就會被編譯成:

sel sel = sel_get_uid("

setvalue:forkey:");

imp method = objc_msg_lookup(dic->isa,sel);

method(dic,sel,

@"zhangsan

",@"

name

");

其中,sel_get_uid函式是通過方法名得到乙個方法選擇器。

objc_msg_lookup:如果我們想用oc執行函式得到乙個imp,就可以使用objc_msg_lookup函式 。

這樣kvc內部實現就可以這樣描述了:

乙個物件在呼叫setvalue的時候,

1、根據方法名找到執行方法的時候所需要的環境引數。

2、他會從自己isa指標結合環境引數,找到具體的方法實現介面。

3、再直接查詢得到的具體的方法實現。

KVC實現原理簡介

kvc,全稱 key value coding。kvc運用了isa swizzling技術。isa swizzling就是型別混合指標機制。kvc主要通過isa swizzling來實現其內部定位查詢。isa指標 is a kind of 指向維護分發表的物件的類。該分發表實際上包含了指向實現類中的...

KVC相關簡介

kvc key value coding 根據字串的名稱去設定或者獲取類的屬性的機制 person zhangsan person alloc init 通過set方法設定張三的名稱 zhangsan setname zhangsan 通過get方法獲取張三的名稱 nsstring name zha...

KVC和KVO底層原理

kvc和kvo想必都熟知的乙個名詞,觀察者模式,而kvo是基於kvc的,那麼kvc到底是個什麼,kvo又是什麼,那麼它們之間是怎麼關聯的。當你了解kvc機制,會恍然大悟,只要知道乙個ui的結構,就能對他做任意的修改。而kvo是觀察者模式的一種實現,對物件屬性監聽能達到乙個高效能處理,所以了解kvc和...