1.當某個類的對象第一次被觀察後,系統會通過Runtime動态的建立一個派生類,繼承原始類,如原始類為Member,則派生類為NSKVONotify_Member.
在添加觀察之前派生類為NSKVONotify_Member的isa指針指向了原始類Member。實際上是重寫了class方法來runtime該對象是屬于那個類。
2.派生類為NSKVONotify_Member重寫原始類的四個方法
setter 用于通知觀察者值已經發生改變
class 傳回值為原始類 return class_getSuperclass(object_getClass(self))
_isKVOA 私有方法_isKVOA 是用來标示該類是一個KVO 機制聲稱的類
dealloc 處理一些釋放記憶體工作
下面是具體的代碼分析: