ios开发kvo模式基础-Key-Value Observing 快速入门
2011-08-30 18:42
309 查看
Key-Value
Observing 快速入门
翻译:杨登峰 (dengfengyang@gmail.com)
时间:2010-03-12
转帖请注明转之 苹果开发中文网(http://www.CocoaDev.cn)
以上说明是本文不可分割的一部分。
声明一下 虽然标题为原创,但实际上这个转来的文章 来自:http://www.CocoaDev.cn
假如需要掌握Key-Value Observing机制,那么需要阅读本文应该有帮助。本文提供了Key-Value Observing的一个概述,并且解释为什么需要用它,什么时候用它。在阅读本文之前需要对Key-Value Observing需要有一个基本的了解。
Key-Value
Observing机制的概述
Key-Value Observing (简写为KVO):当指定的对象的属性被修改了,允许对象接受到通知的机制。每次指定的被观察对象的属性被修改的时候,KVO都会自动的去通知相应的观察者。
KVO的优点
当有属性改变,KVO会提供自动的消息通知。这样的架构有很多好处。首先,开发人员不需要自己去实现这样的方案:每次属性改变了就发送消息通知。这是KVO机制提供的最大的优点。因为这个方案已经被明确定义,获得框架级支持,可以方便地采用。开发人员不需要添加任何代码,不需要设计自己的观察者模型,直接可以在工程里使用。其次,KVO的架构非常的强大,可以很容易的支持多个观察者观察同一个属性,以及相关的值。
KVO如何工作
需要三个步骤来建立一个属性的观察员。理解这三个步骤就可以知道KVO如何设计工作的。
(1)首先,构思一下如下实现KVO是否有必要。比如,一个对象,当另一个对象的特定属性改变的时候,需要被通知到。
![](http://www.cocoadev.cn/uploadfile/kvo_objects.jpg)
例如,PersonObject希望能够觉察到BankObject对象的accountBalance属性的任何变化。
(2)那么PersonObject必须发送一个“addObserver:forKeyPath:options:context:”消息,注册成为BankObject的accountBalance属性的观察者。
![](http://www.cocoadev.cn/uploadfile/kvo_objects_connection.jpg)
(说明:“addObserver:forKeyPath:options:context:”方法在指定对象实例之间建立了一个连接。注意,这个连接不是两个类之间建立的,而是两个对象实例之间建立的。)
(3)为了能够响应消息,观察者必须实现“observeValueForKeyPath:ofObject:change:context:”方法。这个方法实现如何响应变化的消息。在这个方法里面我们可以跟自己的情况,去实现应对被观察对象属性变动的相应逻辑。
![](http://www.cocoadev.cn/uploadfile/kvo_objects_implementation.jpg)
(4)假如遵循KVO规则的话,当被观察的属性改变的话,方法“observeValueForKeyPath:ofObject:change:context:”会自动被调用。
![](http://www.cocoadev.cn/uploadfile/kvo_objects_notification.jpg)
后记:本文提供的只是KVO的一个简要概述。KVO很强大很灵活,所以还有很多细节,如自动和手动键值观察,或一对多和一对一的关系,这些后面再讲。
Observing 快速入门
翻译:杨登峰 (dengfengyang@gmail.com)
时间:2010-03-12
转帖请注明转之 苹果开发中文网(http://www.CocoaDev.cn)
以上说明是本文不可分割的一部分。
声明一下 虽然标题为原创,但实际上这个转来的文章 来自:http://www.CocoaDev.cn
假如需要掌握Key-Value Observing机制,那么需要阅读本文应该有帮助。本文提供了Key-Value Observing的一个概述,并且解释为什么需要用它,什么时候用它。在阅读本文之前需要对Key-Value Observing需要有一个基本的了解。
Key-Value
Observing机制的概述
Key-Value Observing (简写为KVO):当指定的对象的属性被修改了,允许对象接受到通知的机制。每次指定的被观察对象的属性被修改的时候,KVO都会自动的去通知相应的观察者。
KVO的优点
当有属性改变,KVO会提供自动的消息通知。这样的架构有很多好处。首先,开发人员不需要自己去实现这样的方案:每次属性改变了就发送消息通知。这是KVO机制提供的最大的优点。因为这个方案已经被明确定义,获得框架级支持,可以方便地采用。开发人员不需要添加任何代码,不需要设计自己的观察者模型,直接可以在工程里使用。其次,KVO的架构非常的强大,可以很容易的支持多个观察者观察同一个属性,以及相关的值。
KVO如何工作
需要三个步骤来建立一个属性的观察员。理解这三个步骤就可以知道KVO如何设计工作的。
(1)首先,构思一下如下实现KVO是否有必要。比如,一个对象,当另一个对象的特定属性改变的时候,需要被通知到。
![](http://www.cocoadev.cn/uploadfile/kvo_objects.jpg)
例如,PersonObject希望能够觉察到BankObject对象的accountBalance属性的任何变化。
(2)那么PersonObject必须发送一个“addObserver:forKeyPath:options:context:”消息,注册成为BankObject的accountBalance属性的观察者。
![](http://www.cocoadev.cn/uploadfile/kvo_objects_connection.jpg)
(说明:“addObserver:forKeyPath:options:context:”方法在指定对象实例之间建立了一个连接。注意,这个连接不是两个类之间建立的,而是两个对象实例之间建立的。)
(3)为了能够响应消息,观察者必须实现“observeValueForKeyPath:ofObject:change:context:”方法。这个方法实现如何响应变化的消息。在这个方法里面我们可以跟自己的情况,去实现应对被观察对象属性变动的相应逻辑。
![](http://www.cocoadev.cn/uploadfile/kvo_objects_implementation.jpg)
(4)假如遵循KVO规则的话,当被观察的属性改变的话,方法“observeValueForKeyPath:ofObject:change:context:”会自动被调用。
![](http://www.cocoadev.cn/uploadfile/kvo_objects_notification.jpg)
后记:本文提供的只是KVO的一个简要概述。KVO很强大很灵活,所以还有很多细节,如自动和手动键值观察,或一对多和一对一的关系,这些后面再讲。
相关文章推荐
- ios开发kvo模式基础-Key-Value Observing 快速入门
- iOS开发笔记之基于键值的观察者模式(KVO)
- iOS海哥开发笔记 (海哥原创,常用的设计模式MVC,单例,代理,KVO)
- iOS小明开发笔记(二十九) (设计模式MVC、单例、代理、KVO)
- keyPathForValuesAffectingValueForKey ios开发 kvo相关
- IOS开发入门(12)-表视图I:基础知识
- Objective-C ,ios,iphone开发基础:快速实现一个简单的图片查看器
- 没有基础如何快速学习iOS 开发?
- IOS App入门开发进阶 第一课 OC语言基础学习
- IOS开发基础Object-C(12)—单例模式
- iOS开发快速入门教程——3.6节~3.10节
- iOS开发7-KVO(Key-Value Observer)键值观察
- [教程技巧] 没有C语言和Objective-C基础 如何快速学习iOS开发
- [ios开发基础之]KVO的使用
- ios开发 UI基础入门知识
- iOS概念之KVO(Key-Value Observing)
- iOS中有两种支持机制:Notification和KVO(Key-Value Observing)
- IOS开发语言Swift入门连载---基础部分
- Objective-C深入浅出,ios开发零基础入门(Xcode入门及语法入门)课程分享
- iOS开发-基础:Objective-c单例模式的正确写法