天天看點

iOS 深入了解KVO底層實作原理

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 處理一些釋放記憶體工作

下面是具體的代碼分析:

iOS 深入了解KVO底層實作原理
iOS 深入了解KVO底層實作原理
iOS 深入了解KVO底層實作原理
iOS 深入了解KVO底層實作原理
iOS 深入了解KVO底層實作原理