objective-c - 基础篇 - KVO键值转换设计模式
2016-05-10 13:00
471 查看
一、KVO键值转换设计模式
注:KVO键值转换设计模式中需要注意的地方有: 一:观察的对象必须是全局对象,这样就不会在viewDidLoad结束后消亡。二:移除观察需要另外写在一个事件当中。三:观察者一般为self
。
#import "ViewController.h"
#import "YZBPerson.h"
@interface ViewController ()
@end
@implementation
ViewController
{
YZBPerson * person; //最重要的一步:就是要把需要观察的对象做成全局对象,这样就不会在viewDidLoad结束后消亡。
}
- (void)viewDidLoad {
[superviewDidLoad];
person = [[YZBPersonalloc]init];
person.name =@"张三";
person.age =22;
//KVO第一步:注册观察,Options有四种:
//第一种是监察初始化时:NSKeyValueObservingOptionInitial,可以在初始化时,进行监察
//第二种是监察值变化时:NSKeyValueObservingOptionNew,可以在实现观察的方法中,得到新的值
//第三种是监察值变化时:NSKeyValueObservingOptionOld,可以在实现观察的方法中,得到原本的值
//第四种是监察值变化时:NSKeyValueObservingOptionPrior,可以在实现观察的方法中,得到第一次赋值产生的事件
[personaddObserver:selfforKeyPath:@"name"options:NSKeyValueObser
9b65
vingOptionOld|NSKeyValueObservingOptionNewcontext:@"2222"];
}
//KVO第二步:实现回调的行为,你观察的对象的属性发生变化了
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString
*,id> *)change context:(void *)context
{
NSString * name = [changeobjectForKey:@"new"];
NSLog(@"%@", name);
NSLog(@"key = %@, change = %@, contest = %@",keyPath, change, context);
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)btnTap2:(id)sender {
person.name =@"李四";
}
注:KVO键值转换设计模式中需要注意的地方有: 一:观察的对象必须是全局对象,这样就不会在viewDidLoad结束后消亡。二:移除观察需要另外写在一个事件当中。三:观察者一般为self
。
#import "ViewController.h"
#import "YZBPerson.h"
@interface ViewController ()
@end
@implementation
ViewController
{
YZBPerson * person; //最重要的一步:就是要把需要观察的对象做成全局对象,这样就不会在viewDidLoad结束后消亡。
}
- (void)viewDidLoad {
[superviewDidLoad];
person = [[YZBPersonalloc]init];
person.name =@"张三";
person.age =22;
//KVO第一步:注册观察,Options有四种:
//第一种是监察初始化时:NSKeyValueObservingOptionInitial,可以在初始化时,进行监察
//第二种是监察值变化时:NSKeyValueObservingOptionNew,可以在实现观察的方法中,得到新的值
//第三种是监察值变化时:NSKeyValueObservingOptionOld,可以在实现观察的方法中,得到原本的值
//第四种是监察值变化时:NSKeyValueObservingOptionPrior,可以在实现观察的方法中,得到第一次赋值产生的事件
[personaddObserver:selfforKeyPath:@"name"options:NSKeyValueObser
9b65
vingOptionOld|NSKeyValueObservingOptionNewcontext:@"2222"];
}
//KVO第二步:实现回调的行为,你观察的对象的属性发生变化了
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString
*,id> *)change context:(void *)context
{
NSString * name = [changeobjectForKey:@"new"];
NSLog(@"%@", name);
NSLog(@"key = %@, change = %@, contest = %@",keyPath, change, context);
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)btnTap2:(id)sender {
person.name =@"李四";
}
相关文章推荐
- 内存管理(16.5.10)
- Ubuntu下如何安装并使用Objective-C
- object-c中get/set方法
- C#4.0中的dynamic关键字和ExpandoObject对象
- 关于runtime的objc_getClass和object_getclass
- objective-c - 基础篇 - KVC键值转换设计模式
- objectARX判断当前坐标系
- Fatal error: Using $this when not in object context in parent2.php
- Wordpress里提示警告信息creating default object from empty value in *** 的解决方法
- Java JSONObject后首字母变小写的问题
- Objective-c 学习笔记(一)
- JavaScript:Object类型
- iOS SDK开发时,有关OC和C++混编造成其它类错误的问题(Compile Sources As Objective-C++)
- Q_OBJECT宏的作用
- IOS学习笔记——object-C基础 (一)
- PHP文件处理类 SplFileObject 和 SplFileInfo
- Activity之间序列化传递Object
- object-c方法
- 常用类之Object
- 属性和点语法(16.5.9)