KVO (key value observer)
参考资料:
demo
见PADemo中的NotificationCenterController.swift
KVO的原理
简单的说,KVO之所能够监控到属性值的变化,是因为系统在背后做了如下几步操作:
- 当一个
object
有观察者时,framework
使用runtime
动态创建这个object
的类的子类; - 对于每个被观察的
property
,重写其set
方法; - 在重写的set方法中调用
- willChangeValueForKey:
和- didChangeValueForKey:
通知观察者; - 当一个
property
没有观察者时,删除重写的方法; - 当没有
observer
观察任何一个property
时,删除动态创建的子类。