KVO-键值监听
程序员文章站
2022-05-15 14:55:55
键值监听,就是可以监听对象某个属性值的变化; 首先,在工程中,新建一个Person的类 在viewController中引入头文件“Person”,开始测试KVO的使用 运行程序,得出来的值如下: ......
键值监听,就是可以监听对象某个属性值的变化;
首先,在工程中,新建一个person的类
@interface person : nsobject @property (nonatomic, copy) nsstring *name; @end
在viewcontroller中引入头文件“person”,开始测试kvo的使用
- (void)viewdidload { [super viewdidload]; person *person = [[person alloc] init]; person.name = @"珠珠"; [person addobserver:self forkeypath:@"name" options:nskeyvalueobservingoptionnew | nskeyvalueobservingoptionold context:@"testkvo"]; person.name = @"小雅"; [person removeobserver:self forkeypath:@"name"]; } - (void)observevalueforkeypath:(nsstring *)keypath ofobject:(id)object change:(nsdictionary<nskeyvaluechangekey,id> *)change context:(void *)context { nslog(@"keypaht=%@, object=%@, change=%@, context=%@", keypath,object, change, context); //nskeyvaluechangeoldkey 可以用"old"来代替,但是获取的话,如果系统修改old为"old"的话,那会获取不到,所以建议用nskeyvaluechangeoldkey nslog(@"获取被修改前的值=%@", change[nskeyvaluechangeoldkey]); //nskeyvaluechangenewkey 可以用"new"来代替,但是获取的话,如果系统修改new为"new"的话,那会获取不到,所以建议用nskeyvaluechangenewkey nslog(@"获取修改后的值=%@", change[nskeyvaluechangenewkey]); }
运行程序,得出来的值如下: