KVO与KVC初步了解
2016-01-23 13:18
218 查看
参考: http://magicalboy.com/kvc_and_kvo/
http://www.mamicode.com/info-detail-515516.html
KVC,即是指 NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一。KVC两个方法是:- (id)valueForKey:(NSString *)key; -(void)setValue:(id)value forKey:(NSString *)key;
创建一个NSObject类,Person,含有两个字符属性和一个Person对象:
————————————————————————
Person.h
————————————————————————
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic,copy) NSString * name;
@property (nonatomic,copy) NSString * address;
@property (nonatomic,retain) Person * spouse;
@end
KVO,即Key-Value Observing,建立在 KVC 之上,它能够观察一个对象的 KVC key path 值的变化。
举个例子,用代码观察一个 person 对象的 address 变化,以下是实现的三个方法:
addObserver: 添加观察
observeValueForKeyPath:ofObject:change:context: 在被观察的 key path 的值变化时调用。
dealloc 停止观察
这就是 KVO 的作用,它通过 key path 观察对象的值,当值发生变化的时候会收到通知。
http://www.mamicode.com/info-detail-515516.html
KVC,即是指 NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一。KVC两个方法是:- (id)valueForKey:(NSString *)key; -(void)setValue:(id)value forKey:(NSString *)key;
创建一个NSObject类,Person,含有两个字符属性和一个Person对象:
————————————————————————
Person.h
————————————————————————
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic,copy) NSString * name;
@property (nonatomic,copy) NSString * address;
@property (nonatomic,retain) Person * spouse;
@end
KVO,即Key-Value Observing,建立在 KVC 之上,它能够观察一个对象的 KVC key path 值的变化。
举个例子,用代码观察一个 person 对象的 address 变化,以下是实现的三个方法:
addObserver: 添加观察
observeValueForKeyPath:ofObject:change:context: 在被观察的 key path 的值变化时调用。
dealloc 停止观察
这就是 KVO 的作用,它通过 key path 观察对象的值,当值发生变化的时候会收到通知。
相关文章推荐
- Git仓库某一个文件夹里的文件离奇丢失的问题
- JavaScript数值与字符串类型转换的三种函数
- 共享内存
- 模板(自定义base.html)
- [leetcode]Peeking Iterator
- 3.9 Templates -- Input Helpers
- Android开发请求网络方式详解
- 关于EnumerateObjectsUsingBlock和for-in之间的较量
- Java线程池,多线程编程
- Caffe代码结构初识
- 实现批量拷贝文件夹下所有文件名的命令
- iOS UIView初识
- 快排和冒泡高质量排序
- 数组排序和集合排序的使用
- 网络监听器
- 我的网页搭建中篇01——网页背景02.使用渐变色做网页背景
- 一个iOS应用内购买模块的开发
- gem安装时出现 undefined method `size' for nil:NilClass (NoMethodError) 的解决办法
- Android动画学习笔记-Android Animation
- MySQL特殊函数