通过指定类的属性名称,来达到类属性值的变化,分为手动和自动俩种模式,
其中手动模式 需要在改变属性值的前后分别实现
WillChangeValueForKey
didChangeValueForKey
并且再类中实现方法
automaticallyNotifiesObserversForKey:(Nsstring *)
KVO 的原理:
利用运行时,生成一个对象的子类,并生成子类对象,并替换原来对象的isa指针并且重写了set方法,KVO是基于KVC,KVC是KVO 的入口,一定更要指定键值对的键,才能修改对应的属性;
如果类中还有深层的子类,需指定子类的属性值,如person.age
isa指针:Nsobject 的本质
网友评论