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
  • 相关阅读:
    leetcode 122. Best Time to Buy and Sell Stock II
    leetcode 121. Best Time to Buy and Sell Stock
    python 集合(set)和字典(dictionary)的用法解析
    leetcode 53. Maximum Subarray
    leetcode 202. Happy Number
    leetcode 136.Single Number
    leetcode 703. Kth Largest Element in a Stream & c++ priority_queue & minHeap/maxHeap
    [leetcode]1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree
    正则表达式
    十种排序算法
  • 原文地址:https://www.cnblogs.com/yaowen/p/7486376.html
Copyright © 2011-2022 走看看