KVC, KVO實現原理

2022-09-13 22:39:27 字數 500 閱讀 3404

key-value-coding:kvc顧名思義就是鍵值編碼,通過[setvalue:@"value" forkey:@"key"]來新增一組物件,編譯器會把這行**處理為sel sel           = sel_get_uid(@"setvalue:forkey"); imp method = objc_msg_lookup(site->isa,sel); method(site, sel,           @"value", @"key");這三步。

1.sel資料型別就是編譯器執行objective-c裡的方法的環境引數.

2.imp資料型別其實就是乙個編譯器內部實現時候的函式指標,當objective-c編譯器去處理實現乙個方法的時候,

就會指向個imp物件,這個物件是c語言表述的型別

3.所以當乙個物件在呼叫setvalue的時候,首先根據方法名找到執行方法的時候所需要的環境引數,

然後該物件會從自己的isa指標結合環境引數,找到具體的方法實現的介面,最後直接按查詢到的具體的方法實現

KVC, KVO 實現原理

方法呼叫 物件屬性 類似 person name setvalue forkey 物件的屬性或者 屬性的屬性.可見它已經包含前者.類似 person car name setvalue forkeypath kvc運用了乙個isa swizzling技術.isa swizzling就是型別混合指標機...

kvo實現原理 KVC KVO實現原理

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

KVC KVO的實現原理簡述

kvc全稱為key value coding,鍵值編碼。就是提供了一種機制可以訪問乙個物件的任意屬性。它是通過使用字串作為關鍵字而不是使用setter getter訪問器去訪問乙個物件例項的屬性的機制。問題 kvc是如何訪問屬性的 1 如果是取值操作,檢查是否存在 is,或者 get的對應key的訪...