KVO的简单使用

一、KVO:(Key-Value-Observer)键值观察者,是观察者设计模式的?种具体实现。

触发机制:?个对象(观察者),监测另?对象(被观察者)的某属性是否发?变 化,若被监测的属性发?的更改,会触发观察者的?个?法(?法名固定,类似代理?法)

使?步骤: 1、注册观察者(为被观察者指定观察者以及被观察属性) 2、实现回调?法 3、触发回调?法(被观察属性发?更改) 4、移除观察者



二、使用细解

拿自建的一个Person类来说

Person *person = [[Person alloc] init];

[person addObserver:self forKeyPath:@"person.name" options:( NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew) context:nil];

四个参数:

observer :观察者

keyPath :观察哪个属性

options :观察属性的状态,新旧值还是初始值

context :上下文,用来传值的,如果不需要传值,可置为nil

下面的方法是添加了观察者,属性发生变化时自己调用的方法,不能手动调用。

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

NSLog(@"%@ %@ %@ %@", keyPath, object, change, context);

// 移除观察者

[object removeObserver:self forKeyPath:keyPath context:context];

}

参数含义:

keyPath 所观察的属性

object  别观察者

change  一个字典,内部包含了属性不同状态下的值

context 上下文,从外界传数据过来

时间: 2024-10-15 08:08:35

KVO的简单使用的相关文章

KVO的简单用法

KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了. //KVO是基于KVC的,观察者可以观察一个对象的某个属性(key),但这个属性的值(value)发生变化的时候,会触发一个事件 //KVO中涉及到以下几个概念 //被观察者 通常是  Model //观察者    通常是 Controller //key   被观察者的某个属性 //value

KVC和KVO的简单对比

一.对于KVC模式(Key Value Coding): 1.其实在实际开发中用得比较多得就是:接收到json数据之后,通过解析,解析成NSDictionary,然后再把字典对应的字段建立一个Model,在Model里面自定义一个类方法+(instancetype)modelWithDictionary:(NSDictionary *)keyDictionary方法中调用 ? 1 [self setValuesForKeysWithDictionary:jsonObject]; 从而达到我们想要

iOS KVC 和 KVO 区别简单总结

KVC: key value coding,键值编码.是一种通过使用属性的名称(key)来间接访问对象属性的方法.这个方法可以不用通过 setter/getter 方法来访问对象的属性.该方法使用的实质是,是使用 valueForKey来代替 getter 方法, setValueForKey 来代替 setter 方法. KVC 常用的方法: - (id)ValueForKey:   通过 key 值读取对象的属性 -(id)setValue: forKey: 通过 key 的值来使用属性 -

iOS KVC与KVO的简单使用

#import "ViewController.h" #import <Foundation/Foundation.h> @interface DataModel : NSObject @property (nonatomic,copy)NSString *stockName; @property (nonatomic,assign)float price; @end @implementation DataModel @end @interface ViewControl

iOS开发笔试面试- KVC/KVO简单使用

转自:http://my.oschina.net/caijunrong/blog/510701 一.对于KVC模式(Key Value Coding): 1.其实在实际开发中用得比较多得就是:接收到json数据之后,通过解析,解析成NSDictionary,然后再把字典对应的字段建立一个Model,在Model里面自定义一个类方法+(instancetype)modelWithDictionary:(NSDictionary *)keyDictionary方法中调用 [self setValue

IOS开发之旅-KVO

在设计模式中,有一种模式称为观察者模式,Objective-c也提供了类似的机制,简称为KVO[Key-Value Observing].当被观察者的属性改变时立即通知观察者触发响应的行为. 在KVO中,首先被观察者与观察者应该先建立关系,当被观察的特定属性改变时,立刻通知观察者,建立联系调用如下方法: /* Register or deregister as an observer of the value at a key path relative to the receiver. The

iOS开发-简单工厂模式

设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.概念很长,iOS开发中最常遇到的有单例模式,观察者模式(KVO),简单工厂模式其实在开发中也非常常见,就是由工厂类根据传入的参数,动态决定应该创建出对应的产品类的实例. 基础概念 举一个生活的例子是我们有各种中字开头的银行卡,我们每天都会消费,消费的时候每个银行卡提示不同的信息,我们可以先抽象出来一个银行卡类: @inter

delegate、notification、KVO场景差别

delegate: 编译器会给出没有实现代理方法的警告 一对一 使用weak而不是assign,或者vc消失时置为nil 可以传递参数,还可以接收返回值 notification: 编译期无法排错 一对多 恰当时候需要移除注册,否则多次add会造成多次收到消息 可以传递参数,但无返回值. KVO: 简单的实现两对象间的信息同步 能够对非我们创建的对象,即内部对象的状态改变作出响应,而且不需要改变内部对象(SKD对象)的实现 能够提供观察的属性的最新值以及先前值: 用key paths来观察属性,

iOS开发——MVC详解&amp;Swift+OC

MVC 设计模式 这两天认真研究了一下MVC设计模式,在iOS开发中这个算是重点中的重点了,如果对MVC模式不理解或者说不会用,那么你iOS肯定学不好,或者写不出好的东西,当然本人目前也在学习中,不过既然能看到这篇文档,说明你已经开始着手学习并且想深入研究它了,个人也是研究很久才搞懂,就写下来希望对各位有用,也能方便自己以后开发中查看,好了废话不多说,下面就来详细介绍一下MVC,并且用实例验证一下在项目开发中怎么去使用它. 相信你对 MVC 设计模式 并不陌生,只是不能完全理解其中的含义或者不能