KVO的全稱是Key-Value Observing巩趁,俗稱“鍵值監(jiān)聽”爱致,可以用于監(jiān)聽某個對象屬性值的改變
image.png
image.png
image.png
iOS用什么方式實現(xiàn)對一個對象的KVO?(KVO的本質(zhì)是什么樱拴?)
當(dāng)一個對象使用了KVO監(jiān)聽馍悟,iOS系統(tǒng)會修改這個對象的isa指針畔濒,改為指向一個全新的通過Runtime動態(tài)創(chuàng)建的子類
子類擁有自己的set方法實現(xiàn),內(nèi)部會調(diào)用
willChangeValueForKey:
原來的setter
didChangeValueForKey:赋朦,這個方法內(nèi)部又會調(diào)用監(jiān)聽器(observer)的監(jiān)聽方法
如何手動觸發(fā)KVO篓冲?
手動調(diào)用
willChangeValueForKey:和didChangeValueForKey: