ios用什么方式实现一个对象的kvo?(kvo的本质是什么?)
KVO的全称是key-value obsering 俗称"键值监听",可以用于监听某个对象属性值的改变
1.利用runtime的动态生成一个子类,并且让实例对象的isa指向全新的子类
2.当修改实例对象的属性时,会调用Foundation的NSSet***ValueAndNotify函数,函数内部调用willChangeValueForKey,然后调用父类原来的setter方法,.然后调用didChangeValueForKey方法.didChangeValueForKey内部触发监听器的observeValueForKeyPath方法
如何手动触发KVO?
手动调用下面两个方法
[self.p1 willChangeValueForKey:@"age"];[self.p1 didChangeValueForKey:@"age"];