欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

KVO-键值监听

程序员文章站 2022-10-25 19:32:17
键值监听,就是可以监听对象某个属性值的变化; 首先,在工程中,新建一个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]);
}

运行程序,得出来的值如下:

 

 

KVO-键值监听