iOS_KVO的實現

實現步驟如下:

 

// 1. 定義觀察回調block(觀察者, 觀察鍵值, 舊值, 新值)

// 2. 聲明添加觀察者方法(觀察者, 觀察鍵值, block)

// 3. 聲明刪除觀察者方法(觀察者, 觀察鍵值)

// 4. 創建觀察model: 觀察者, 觀察鍵值, block

// 5. 實現添加觀察者方法:

    //1> 獲取系統自動生成的setter方法(沒有則拋出異常)

    //2> 獲取當前類和類名

    //3> 創建子類 "MMKVOClassPrefix_(className)", 實現class方法, 向runtime註冊該類

    //4> 爲之類實現setter方法 (動態綁定)

        // 1) 獲取oldValue

        // 2) 調用父類的setter方法 對屬性賦值

        // 3) 遍歷觀測者數組

        // 4) 找到與observer和key對應的model

        // 5) 調用其block, 傳入(self, getterName, oldValue, newValue)

    //5> 創建觀察model, 存入observer key block

    //6> 獲取self的關聯屬性observers數組, 並將新model加入

// 6. 實現移除觀察者方法:

    //1> 獲取self的關聯屬性observers數組

    //2> 找到與observer和key對應的model, remove


Demo地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章