iOS底層原理之KVO分析(下)

咱們在上文iOS底層原理之KVO分析(上)中分析了KVO原理,本文主要是根據KVO原理自定義KVO的實現。git

定義管理KVO信息的類

定義管理KVO信息的類,主要包括ObserverkeyPathNSKeyValueObservingOptions以及監聽屬性變化的回調block,例如本文以SafeKVOInfoManager類爲管理類,代碼以下github

  • .h代碼
  • .m代碼

KVO處理類重點、難點

爲了使全部繼承於NSObject類均可以使用咱們自定義的KVOKVO處理類處理成NSObject的分類。本文以NSObject+SafeKVO分類做爲KVO處理類`。markdown

NSObject+SafeKVO分類聲明函數

safeAddObserver:函數分析

咱們給任意對象添加屬性KVO監聽,都須要調用safeAddObserver:函數函數

judgeSetterMethodFromeKeyPath函數分析

setterForGetter函數

一樣也有從setter方法獲取getter方法的getterForSetter

派生類函數creatSafeKVONotifingObservingKVOWithKeyPath分析

safe_class函數分析

safe_setter函數分析

safe_dealloc分析

safe_dealloc運行後結果分析

safeRemoveObserver函數分析

safeRemoveObserver函數能夠不一樣調用 oop

git項目下載地址

相關文章
相關標籤/搜索