zoukankan      html  css  js  c++  java
  • ios27--kvo

    //
    //  ViewController.h
    //  14-KVO的使用
    
    #import <UIKit/UIKit.h>
    
    @interface ViewController : UIViewController
    
    
    @end
    //
    //  ViewController.m
    //  14-KVO的使用
    //
    /*
       KVO: Key Value Observing (键值监听)--->当某个对象的属性值发生改变的时候(用KVO监听)
     */
    
    #import "ViewController.h"
    #import "XMGPerson.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
     
        XMGPerson *person = [[XMGPerson alloc] init];
        person.name = @"zs";
        
        XMGPerson *person1 = [[XMGPerson alloc] init];
        person.name = @"zs";
        /*
         作用:给对象绑定一个监听器(观察者)
         - Observer 观察者
         - KeyPath 要监听的属性
         - options 选项(方法方法中拿到属性值,拿到新值和旧值)
         */
        [person addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
        
        
        person.name = @"ls";
        
        person1.name = @"ls";
        
        person.name = @"ww";
        
    
        
        // 移除监听
        [person removeObserver:self forKeyPath:@"name"];//移除哪个对象的哪个属性的监听
    }
    
    /**
     *  当监听的属性值发生改变
     *
     *  @param keyPath 要改变的属性
     *  @param object  要改变的属性所属的对象
     *  @param change  改变的内容
     *  @param context 上下文
     */
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
        NSLog(@"%@------%@------%@------%@", keyPath, object, change,context);
        /*
         name------<XMGPerson: 0x6080000102d0>------{kind = 1;new = ls;old = zs;}------(null)
         */
    }
    
    @end
    //
    //  XMGPerson.h
    //  14-KVO的使用
    
    #import <Foundation/Foundation.h>
    
    @interface XMGPerson : NSObject
    
    /** 姓名 */
    @property (nonatomic, copy) NSString *name; //string用copy
    
    @end
    //
    //  XMGPerson.m
    //  14-KVO的使用
    
    #import "XMGPerson.h"
    
    @implementation XMGPerson
    
    @end
  • 相关阅读:
    Pieczęć(模拟)
    【并查集】关押罪犯
    火车进栈
    独木舟上的旅行
    哈尔滨理工大学第八届程序设计团队赛K题
    [数学、递推]Everything Is Generated In Equal Probability
    [构造]triples I
    2019牛客第三场
    [DP]销售
    [哈夫曼树]猜球球
  • 原文地址:https://www.cnblogs.com/yaowen/p/7486376.html
Copyright © 2011-2022 走看看