ios用什么方式實現(xiàn)一個對象的kvo?(kvo的本質(zhì)是什么?)
KVO的全稱是key-value obsering 俗稱"鍵值監(jiān)聽",可以用于監(jiān)聽某個對象屬性值的改變
1.利用runtime的動態(tài)生成一個子類,并且讓實例對象的isa指向全新的子類
2.當(dāng)修改實例對象的屬性時,會調(diào)用Foundation的NSSet***ValueAndNotify函數(shù),函數(shù)內(nèi)部調(diào)用willChangeValueForKey,然后調(diào)用父類原來的setter方法,.然后調(diào)用didChangeValueForKey方法.didChangeValueForKey內(nèi)部觸發(fā)監(jiān)聽器的observeValueForKeyPath方法
如何手動觸發(fā)KVO?
手動調(diào)用下面兩個方法
[self.p1 willChangeValueForKey:@"age"];[self.p1 didChangeValueForKey:@"age"];