KVO:键-值观察,来源于一种设计模式:观察者模式。
观察者模式
所有的设计模式最终目的都是一个,就是要解耦。解耦:是指任何模块之间不存在硬关联,都是可以对关联进行修改与替换。这是提供系统的可扩展性和可维护性的基础,降低模块、组件之间的耦合度是开发人员应该牢记的一个编程准侧。
观察者模式是一种行为型设计模式。行为型设计模式讨论的是模块实体在运行过程中的行为模式,重点在于行为动作,而观察者模式说的就是某个模块实体发生变化所引起其他模块的行为动作。
观察者模式存在两种角色
角色1:被观察者(Observed Object)
角色2:观察者(Observers)
在iOS开发,使用KVO的时候,很多请情况下要求观察者在对象销毁之前取消对某一个被观察者的观察行为,需要操作:
A(被观察者) remove B(观察者)
那么有一些问题存在:
1. 是否B (观察者)是否对A(被观察者)实施过观察行为。
2. A(被观察者)的观察者容器中是否存在B(观察者)。