【iOS7的一些总结】7、键值观察者模式KVO

简介: 1、概念: 所谓键值观察者,是一个对象获取其他对象特定属性变化的通知机制。看上去KVO同通知机制类似,而不同点在于KVO没有提供一个所谓的通知中心为所有的观察者提供变化通知,而是当变化发生时,通知直接送达正在观察的对象。

1、概念:

所谓键值观察者,是一个对象获取其他对象特定属性变化的通知机制。看上去KVO同通知机制类似,而不同点在于KVO没有提供一个所谓的通知中心为所有的观察者提供变化通知,而是当变化发生时,通知直接送达正在观察的对象。


2、键值观察者模式的实现:

(1)注册观察者:

观察对象发送消息到被观察对象,以建立二者的观察关系:

- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context;

keyPath所指的是被观察对象的属性名,用字符串表示。


(2)当所观察对象的属性发生变化时,调用以下方法:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;

需要注意的是,keyPath所表示的属性,必须使用setter方法或者kvc方法改变值的时候才会调用kvo的观察响应函数,直接在类的内部改变属性的值,kvo方法无效。


(3)移除观察者:

- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;
移除之后,对象属性的变化将不会再引发响应函数的调用。

目录
相关文章
|
存储 iOS开发
iOS Principle:KVO(下)
iOS Principle:KVO(下)
268 0
iOS Principle:KVO(下)
|
存储 C语言 iOS开发
iOS Principle:KVO(上)
iOS Principle:KVO(上)
309 0
iOS Principle:KVO(上)
|
Android开发 iOS开发
iOS开发:KVC与KVO
KVC 就是键值编码(key-value-coding),可以直接访问对象的属性,或者给对象的属性赋值。黑魔法之一,很多高级的iOS开发技巧都是基于KVC实现的。 KVO 是键值观察者(key-value-observing)。实现方式:通过对某个对象的某个属性添加观察者,当该属性改变,就会调用”observeValueForKeyPath:”方法,为我们提供一个“对象值改变了!”的时机进行一些操作。
491 0
iOS开发:KVC与KVO
|
编译器 iOS开发
iOS-底层原理 23:KVO 底层原理
iOS-底层原理 23:KVO 底层原理
526 0
iOS-底层原理 23:KVO 底层原理
|
安全 iOS开发
iOS探索 -- KVO 的原理分析
KVO (key-value-observing) 是一种 键值观察 机制, 它允许当前对象去观察目标对象的某个属性的变化; 当被观察对象的属性发生变化后, 会通过特定方法通知观察者对象属性变化的一些情况内容, 观察者对象拿到变化情况后做出相关操作。
346 0
|
监控 iOS开发
IOS开发-KVO
观察者,观察对象属性的变化,当被观察者该属性发生变化时,观察者会接收到通知,可以在回调函数中做相应的处理
|
Java iOS开发
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(二)
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(二)
261 0
|
存储 安全 C语言
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(一)
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(一)
437 0
|
iOS开发
IOS学习笔记八(KVO)
IOS学习笔记八(KVO)
252 0
|
定位技术 iOS开发
iOS中KVC与KVO的应用解析
iOS中KVC与KVO的应用解析
281 0