个人关于对KVC和KVO
来源:互联网 发布:鞋子价格,淘宝 编辑:程序博客网 时间:2024/06/13 16:49
用Xcode新建一个简单的工程为例:
建一个模型类 Student
在Student.h里面申明一个name 属性
#import <Foundation/Foundation.h>@interface Student : NSObject@property (nonatomic,copy) NSString *name;@end
在 ViewController.m 中
#import "ViewController.h"#import "Student.h"@interface ViewController (){ Student *_student;}@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; _student = [[Student alloc] init]; _student.name = @"1569"; //KVC -->KEY VALUE CODING<键值编码> [_student setValue:@"1568" forKey:@"name"]; NSLog(@"%@",_student.name); //KVO -->KEY VALUE OBSERVER<键值观察者> //工作原理 //A类有一个属性,同时给A类添加一个观察者B类,当A类的属性发生变化时,B类就会执行一个观察者方法来获取到A类属性发生变化的最新值 //添加一个观察者, [_student addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil]; _student.name = @"1567"; }//B类执行的观察者方法- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ //A 类的属性变化的值 保存在change里,如果想获取最新值,那么key是new,如果是旧值,那么key是old NSString *name = [change objectForKey:@"new"]; NSLog(@"Student类的name属性变化的最新值是%@",name); //假如程序崩了,写如下代码解决奔溃问题 //产生奔溃的原因是 没有移除观察者 [_student removeObserver:self forKeyPath:@"name"]; }
0 0
- 个人关于对KVC和KVO
- 关于KVC--KVO--KVB
- 关于KVO/KVC
- kvo 和kvc
- KVO和KVC
- KVC和KVO简介
- kvo和kvc
- Iphone 和 KVC/KVO
- kvc和kvo
- KVC和KVO
- KVC、KVO和谓词
- KVC和KVO
- KVO和KVC
- KVC 和KVO机制
- KVO和KVC
- KVC 和 KVO
- KVC和KVO
- ios kvc和kvo
- x265-1.8版本-common/wavefront.h注释
- 判断 ttf 字体文件是否包含某个字
- x265-1.8版本-common/yuv.h注释
- HDU-1016-Prime Ring Problem( C && 经典DFS题 )
- 深拷贝与浅拷贝
- 个人关于对KVC和KVO
- when the android meet dagger2
- 1965: [Ahoi2005]SHUFFLE 洗牌 快速幂+扩展欧几里得算法
- leetcode326题 题解 翻译 C语言版 Python版
- 【PA2014】【BZOJ3711】Druzyny
- ELF文件学习
- C++类型转换
- MYSQL优化
- x265-1.8版本-encoder/bitcost.cpp注释