zoukankan      html  css  js  c++  java
  • 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]);
    }

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

  • 相关阅读:
    461. Hamming Distance
    342. Power of Four
    326. Power of Three
    368. Largest Divisible Subset java solutions
    95. Unique Binary Search Trees II java solutions
    303. Range Sum Query
    160. Intersection of Two Linked Lists java solutions
    88. Merge Sorted Array java solutions
    67. Add Binary java solutions
    14. Longest Common Prefix java solutions
  • 原文地址:https://www.cnblogs.com/lyz0925/p/11441606.html
Copyright © 2011-2022 走看看