KVO的實現原理

2021-10-09 16:15:23 字數 379 閱讀 6291

kvo是基於runtime機制實現的

當我們為乙個屬性新增觀察者模式之後,系統會利用runtime動態建立乙個繼承於屬性所在類的子類 "nskvonotifying_***" ,***為類名,並且讓例項物件的isa指向這個全新的子類,當修改例項物件時,會呼叫foundation框架的_nsset***valueandnotify函式,在_nsset***valueandnotify內部會呼叫

willchangevalueforkey: 

父類原來的setter方法進行修改 ([super set***:])

didchangevalueforkey:  內部會觸發***的監聽方法 (observevalueforkeypath:ofobject:change:content:)

KVO實現原理

kvo的執行原理是基於執行時的 當乙個物件註冊了監聽者以後 程式執行時就會動態的建立被監聽者的乙個子類 nskvonotifying 建立該子類的物件 kvo只能監聽物件屬性通過setter方法改變時監聽 1 當乙個object有觀察者時,動態建立這個object的類的子類 2 對於每個被觀察的pr...

KVO 實現原理

1.self.person 要監聽的物件 2.引數說明 param addobserver 觀察者,負責處理監聽事件的物件 param forkeypath 要監聽的屬性 param options 觀察的選項 觀察新 舊值,也可以都觀察 param context 上下文,用於傳遞資料,可以利用上...

KVO實現原理

kvo 的全稱是 key value observing 俗稱 鍵值監聽 可以用於監聽某個物件屬性值的改變。下面來 一下kvo的本質 1.新建乙個xzperson類 import inte ce xzperson nsobject property nonatomic,assign int age ...