`
ericbaner
  • 浏览: 173289 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】Key-Value Observing 快速入门

    博客分类:
  • iOS
 
阅读更多

Key-Value Observing 快速入门

假如需要掌握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是否有必要。比如,一个对象,当另一个对象的特定属性改变的时候,需要被通知到。

例如,PersonObject希望能够觉察到BankObject对象的accountBalance属性的任何变化。

 

(2)那么PersonObject必须发送一个“addObserver:forKeyPath:options:context:”消息,注册成为BankObject的accountBalance属性的观察者。

(说明:“addObserver:forKeyPath:options:context:”方法在指定对象实例之间建立了一个连接。注意,这个连接不是两个类之间建立的,而是两个对象实例之间建立的。)

 

(3)为了能够响应消息,观察者必须实现“observeValueForKeyPath:ofObject:change:context:”方法。这个方法实现如何响应变化的消息。在这个方法里面我们可以跟自己的情况,去实现应对被观察对象属性变动的相应逻辑。

 

(4)假如遵循KVO规则的话,当被观察的属性改变的话,方法“observeValueForKeyPath:ofObject:change:context:”会自动被调用。

 

后记:本文提供的只是KVO的一个简要概述。KVO很强大很灵活,所以还有很多细节,如自动和手动键值观察,或一对多和一对一的关系,这些后面再讲。

 

 

http://www.cocoadev.cn/CocoaDev/Key-Value-Observing-Quick-Start-cn.asp

分享到:
评论

相关推荐

    KVO (Key Value Observing)

    KVO (Key Value Observing)是ios里面一种特别方便的机制用于“捕捉”对象属性的变化。在概念理解上,是设计模式里面观察者模式的一种实践。

    DemoKVO_KVC

    KVO即Key-Value Observing,称为键值观察者。是一种编程设计模式,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的...

    iOS KVO设计模式

    KVO(Key-Value Observing)是Objective-C中最强大最实用的功能之一。 下面的例子可以帮你更好的理解它。

    Cocoa.Programming.for.Mac.OS.X,3rd,2008(中文,仅18章).pdf

    第七章:Key-Value Coding.Key-Value Observing 第八章:NSArrayController 第九章:NSUndoManager 第十章:Archiving 第十一章:Core Data 基本原理 第十二章:Nib 文件和 NSWindowController 第十三章:User ...

    Objective-C Programming: The Big Nerd Ranch Guide (2nd Edition)

    - Key-Value Observing (KVO) - Runtime basics Product Details Series: Big Nerd Ranch Guides Publisher: Big Nerd Ranch Guides; 2 edition (November 28, 2013) Language: English ISBN-10: 032194206X ISBN...

    iphone kvo 实例

    一个iphone运用Key-Value Observing 的实例,简单易懂,需要的可以下一下。

    一个安全的 Swift/ObjC KVO 包装.zip

    一个安全的 Swift/ObjC KVO 包装.zip,Modern thread-safe and type-safe key-value observing for Swift and Objective-C

    iOS中KVCDemo

    KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。这是一个简单的kvodemo,帮助初学者理解。

    swift-KVOControlleriOS和OSX的简单现代线程安全的键值观察

    VOController 是一个简单安全的 KVO(Key-value Observing,键-值 观察)工具,用于 iOS 和 OS X 应用开发中,开源自 facebook。KVO 是一个在 MVC(Model-View-Controller)应用程序开发中,用于不同模块间交流的一...

    ObserverKit:一个使用 UIControl、NSNotification、Key Value Observing 的简单库。

    一个简单的库,用于使用 UIControl、NSNotification、Key Value Observing... ##Install with CocoaPod pod 'ObserverKit' 和 #import "OKObserver.h" #import "NSObject+OKObserver.h" // Optional ##例子 ...

    以实例讲解Objective-C中的KVO与KVC机制

    主要介绍了以实例讲解Objective-C中的KVO与KVC机制,即Key-Value-Observing与Key-Value-Coding,需要的朋友可以参考下

    YABrowserViewController:另一个浏览器视图控制器

    您喜欢未记录的 Key-Value Observing 用法。 您希望引入一堆其他依赖项。您需要NSHTTPCookieStorage 、 NSURLCache 、 NSURLProtocol 、访问不是tmp文件夹、状态保留的 URL 历史记录或其他WKWebView不关心的东西。...

    iOS自动移除KVO观察者的实现方法

    KVO即:Key-Value Observing, 直译为:基于键值的观察者。 它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。 简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者...

    Programming iOS 11 - Matt Neuburg

    Move into iOS development by getting a firm grasp of its fundamentals, including the Xcode 9 IDE, Cocoa Touch, and...Key paths and key–value observing Expanded git integration Code refactoring And more!

    iOS开发中,怎样用好Notifications?

    另一个框架是NotificationCenter,以它实现的跨object通知以及原生的KVO(Key-Value-Observing)是iOS中观察者模式的主要实现手段。本文内容:UserNotifications介绍本地通知(LocalNotifications)远程通知...

    IPhone中文开发文档

    什么是cocoa 起步 Objective—C语言 内存管理 Target/Action 辅助对象 Key—Value Coding ,Key—Value Observing NSArrayControler NsUndoManager Archiving Coredata基本原理 User Default

    react-intersection-observing-infinity-scroll:支持无限滚动的React组件

    React相交观察无限滚动 :check_mark: :check_mark: 9+ :check_mark: :check_mark: :check_mark: React组件支持极小的无限滚动(元素支持SSR构建和后备渲染。 该库不使用任何eventListener进行滚动事件。...

    M4-DQ5-Observing-Selection-and-Insertion-Sort-nyc-web-051418

    种类! 您需要集中精力编写两种排序算法。 一个在sorts/insertionSort.js ,另一个在sorts/selectionSort.js 。对于集合中的每个项目在数组的未排序部分中找到最小的项,并将其与当前项交换对于集合中的每个项目检查...

    ios-KVC和KVO学习笔记.zip

    如果需要观察多个属性的变化,为避免产生大量的代码,最好是使用键值观察(Key Value Observing,简称KVO),这也是Apple在自己的软件中大量使用的一种。 使用键值观察跟踪单个属性或集合(如数组)的变化非常...

Global site tag (gtag.js) - Google Analytics