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