一、KVO的理解
1.KVO(键值监听)即Key-Value-Observing,是Objective-C对观察者设计模式的一种实现,那么它的工作原理就是对一个指定的被观察对象(例如Person类),当Person的属性name的发生了改变时,那么此时监听对象就会获得通知,并作出相应的处理。
二、代码分析



代码实现思路:图1中对Person类的属性name进行键值观察,通过图3点击模拟器屏幕来修改name的值,然后在图2中的监听方法里打印name变化的值。
二、KVO底层实现原理(以Person类为例)
1.自定义Person类的子类,即派生出NSKVONotifying_Person这个类

2.重写setName:方法,在内部恢复父类做法,通知观察者
3.如何让外界调用自定义Person的子类方法,修改当前对象的isa指针,指向自定义的子类!
三、自定义KVO



你只要理解了KVO到底干了啥,那你就能对自定义的KVO有个很好的理解!
我是新手,如有不对的地方,欢迎大家指正,大家一起共同进步!谢谢!
网友评论