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
  • 相关阅读:
    No Hibernate Session bound to thread, and configuration does not allow
    谈谈数据库中MyISAM与InnoDB区别
    hibernate实体的几种状态:
    解决Eclipse导出javadoc乱码问题
    freemarker截取字符串
    many-to-one和one-to-many的配置比较
    one-to-many many-to-one配置解释
    extends:类似于java中的继承特征,extends="struts-default"
    eclipse 中创建maven web项目
    java.lang.ClassNotFoundException: javax.persistence.EntityListeners
  • 原文地址:https://www.cnblogs.com/yaowen/p/7486376.html
Copyright © 2011-2022 走看看