• 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
  • 相关阅读:
    CocoaPods的基本使用方法
    【STM32】电能表抄表功能实现|自学笔记
    【STM32】串口收发驱动Drv_Uart|学习笔记
    【STM32】SYSCLK配置|学习笔记
    【stm32】的PWM外设|学习笔记
    【JavaScript】setAttribute在添加事件时失效解决办法
    三步建立自己域名的主页,Github Pages功能简明手册
    Java生成UUID 与 MySQL数据库如何生成uuid数据
    利用Excel办公软件快速拼接SQL
    Java实现几种常见排序方法
  • 原文地址:https://www.cnblogs.com/yaowen/p/7486376.html
Copyright © 2020-2023  润新知