[ios开发基础之]KVO的使用
2012-04-19 22:34
337 查看
本文来源:http://www.wuleilei.com/blog/332
一、概述
KVO,即:Key Value Observing,直译为:基于键值的观察者。
它提供一种机制,当指定的对象的属性被修改后,对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者。
在下文的示例中。图书(Book类),就是个实体。它的属性有书名(name)和价格(price)。那么,在界面开发中,可能有多个视图和这个实体有关联。如果实体(Book)的价格(price)发生了变化,这些关联的界面都要被修改。
二、使用方法
系统框架已经支持KVO,所以程序员在使用的时候非常简单。
1. 注册,指定被观察者的属性;
2. 实现回调方法;
3. 移除观察。
三、实例
假设有一个Book类,此类有name和price属性,当price发生变化时,界面上的价格立刻显示为最新的价格。
1. Book类,头文件:
Book类的实现文件,没做任何事情,不贴了。
2. 在viewController里面实例化它,监听它的属性,并在label中显示它的属性。
3. 点击button的时候,更改book的price属性。
4. 实现回调方法。
5. 增加观察与取消观察是成对出现的,所以在book释放前,要删除观察者。
点击此处下载示例。
一、概述
KVO,即:Key Value Observing,直译为:基于键值的观察者。
它提供一种机制,当指定的对象的属性被修改后,对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者。
在下文的示例中。图书(Book类),就是个实体。它的属性有书名(name)和价格(price)。那么,在界面开发中,可能有多个视图和这个实体有关联。如果实体(Book)的价格(price)发生了变化,这些关联的界面都要被修改。
二、使用方法
系统框架已经支持KVO,所以程序员在使用的时候非常简单。
1. 注册,指定被观察者的属性;
2. 实现回调方法;
3. 移除观察。
三、实例
假设有一个Book类,此类有name和price属性,当price发生变化时,界面上的价格立刻显示为最新的价格。
1. Book类,头文件:
#import <Foundation/Foundation.h> @interface Book : NSObject { NSString *name; float price; } @end
Book类的实现文件,没做任何事情,不贴了。
2. 在viewController里面实例化它,监听它的属性,并在label中显示它的属性。
_book = [[Book alloc] init]; [_book setValue:@"C语言" forKey:@"name"]; [_book setValue:@"10.0" forKey:@"price"]; [_book addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
3. 点击button的时候,更改book的price属性。
- (IBAction)changePrice:(id)sender { [_book setValue:@"12.1" forKey:@"price"]; }
4. 实现回调方法。
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([keyPath isEqualToString:@"price"]) { NSLog(@"%@", change); } }
5. 增加观察与取消观察是成对出现的,所以在book释放前,要删除观察者。
- (void)dealloc { [_book removeObserver:self forKeyPath:@"price"]; [_book release]; [super dealloc]; }
点击此处下载示例。
相关文章推荐
- iOS开发基础-UIView的使用
- [置顶] Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作
- iOS开发之基础篇(15)—— KVC、KVO
- QuartzCode,将iOS / MacOS 开发中使用的基础动画转换为Object-C / Swift代码
- 零基础ios开发(七 字符串和动态数组的联合使用)
- iOS开发学习专题-基础知识(五) NSDate时间 NSUserDefaults本地存储 NSNotification系统通知的详细使用方式
- iOS开发基础之GTMBase64的使用
- ios开发kvo模式基础-Key-Value Observing 快速入门
- iOS开发中正则表达式的基础使用
- iOS开发UI基础—21使用嵌套模型完成的一个简单汽车图标展示程序
- 【IOS开发基础系列】OC基础数据类型使用专题
- ios开发kvo模式基础-Key-Value Observing 快速入门
- iOS开发基础-UILabel的使用
- iOS开发OC基础:NSNumber对象方法的使用
- Objective-C ,ios,iphone开发基础:JSON解析(使用苹果官方提供的JSON库:NSJSONSerialization)
- iOS开发——UI基础-KVO
- IOS开发基础教程学习笔记3 使用Tab Bar切换视图
- iOS开发-基础:keychain的使用
- ioS开发之UI基础--使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- iOS开发基础-UIButton的使用