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
  • 相关阅读:
    WPF中Name和x:Name
    依赖注入(Dependency Injection)
    SQL复制表操作
    奇异值分解和聚类分析操作流程
    奇异值分解(SVD)
    js读取本地txt文件中的json数据
    Python对字典(directory)按key和value排序
    PowerDesigner导入java类生成类图
    python-Levenshtein几个计算字串相似度的函数解析
    编辑距离算法(Levenshtein)
  • 原文地址:https://www.cnblogs.com/yaowen/p/7486376.html
Copyright © 2011-2022 走看看