美文网首页
IOS KVO模式和KVC模式

IOS KVO模式和KVC模式

作者: Lee坚武 | 来源:发表于2016-01-15 00:22 被阅读241次

KVO模式

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

KVO其实也是“观察者”设计模式的一种应用。我的看法是,这种模式有利于两个类间的解耦合,尤其是对于 业务逻辑与视图控制 这两个功能的解耦合。

KVO这一机制是基于NSKeyValueObserving协议的,Cocoa通过这个协议为所有遵循协议的对象提供了自动观察属性变化的能力。在NSObject中已经为我们实现了这一协议,所以我们不必去实现这个协议。

如何使用KVO呢?

首先,你要为你想观察的对象添加一个观察者代码如下:

[object addObserver: observer forKeyPath: @"frame" options: 0 context: nil];

调用方法是:

object : 被观察对象

observer: 观察对象

forKeyPath里面带上property的name,如UIView的frame、center等等

options: 有4个值,分别是:

NSKeyValueObservingOptionNew 把更改之前的值提供给处理方法

NSKeyValueObservingOptionOld 把更改之后的值提供给处理方法

NSKeyValueObservingOptionInitial 把初始化的值提供给处理方法,一旦注册,立马就会调用一次。通常它会带有新值,而不会带有旧值。

NSKeyValueObservingOptionPrior 分2次调用。在值改变之前和值改变之后。

注:例子里的0就代表不带任何参数进去

context: 可以带入一些参数,任何类型都可以,强制转就可以。

接下来观察到值的变化后该应该调用相关的方法来处理,这个方法是:

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

其中:

keyPath: 对应forKeyPath

object: 被观察的对象

change: 对应options里的NSKeyValueObservingOptionNew、NSKeyValueObservingOptionOld等

context: 对应context

KVC模式

KVC的基本概念

Key-value coding,它是一种使用字符串标识符,间接访问对象属性的机制,而不是直接调用getter 和 setter方法。通常我们使用valueForKey 来替代getter 方法,setValue:forKey来代替setter方法。

相关文章

  • 常用设计模式整理

    ios面试题(整理) ios常用的设计模式有哪些? MVC模式、委托模式、观察者模式(kvo、kvc、通知机制)、...

  • IOS KVO模式和KVC模式

    KVO模式 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象...

  • 谈KVC、KVO(重点观察者模式)机制编程

    谈KVC、KVO(重点观察者模式)机制编程 谈KVC、KVO(重点观察者模式)机制编程

  • KVO与KVC

    KVO与KVC是观察者模式在iOS中的一种实现 KVO 一、KVO的介绍 KVO就是观察者模式,说白了就是你关心的...

  • iOS基础(四) - KVC和KVO

    iOS观察者模式学习 (1)KVC与KVO简介 KVC KVC(Key-value coding)是一种间接更改对...

  • iOS KVO,KVC

    iOS KVO,KVC KVO 1.KVO 是一种观察者设计模式,是利用 isa 混写机制来实现 KVO 的。 当...

  • KVO应用、原理及自实现

    一.KVO简介 KVO 是ios里,观察者设计模式的一种应用实现,依赖runtime,基于KVC,KVO提供了一种...

  • KVC 和 KVO

    iOS-KVC和KVO精炼讲解(干货)KVC 和 KVOiOS开发系列--Objective-C之KVC、KVO细...

  • Swift学习总结2

    1.KVC 与KVO KVC: Key - Value - Coding 通过键值对模式编程。KVC是一种间接访问...

  • KVO与KVC

    KVO与KVC的区别: KVO是指键-值-观察者模式,键值监听,监听一个对象属性值的改变,KVO是基于KVC的。K...

网友评论

      本文标题:IOS KVO模式和KVC模式

      本文链接:https://www.haomeiwen.com/subject/ufrhkttx.html