• IOS-KVC/KVO


    KVC 简单介绍设值的一个工具。对于指向id的对象。像其内存存取值。这有点像java的反射;

    存在例如以下一个对象。已知其属性name,可取值: 

    id p=[[Person alloc] init];
    NSString *name=[p valueForKey:@"name"];

    如果,有一个数组,里面存在一系列的对象,我们想取出某一属性放在一个队列中,例如以下:

    Book *book1=[[Book alloc] init];
            book1.name=@"effctive c++";
            
            Book *book2=[[Book alloc] init];
            book2.name=@" more effctive c++";
            
            Book *book3=[[Book alloc] init];
            book3.name=@" most effctive c++";
            
            NSArray *arr=@[book1,book2,book3];
            
            NSLog(@"%@",[arr valueForKey:@"name"]);

    生活中,我们确实存在以上的需求;


    KVO指的是设值过程中对其监听的过程,以实现对业务逻辑的校验

    //创建一个被监视的对象
            Book *book1=[[Book alloc] init];
            
            //设置监听对象
            BookObserve *observe=[[BookObserve alloc] init];
            
            //对其存值的监听-这样的方法用完后不须要移除监听器
            [observe observeValueForKeyPath:@"name" ofObject:book1 change:nil context:@"sadsada"];
            
            //对其存值的监听-02
            [book1 addObserver:observe forKeyPath:@"name" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
            
            book1.name=@" most effctive c++";
            NSLog(@"%@",book1.name);
            
            //取消对其存值的监听-02
            [book1 removeObserver:observe forKeyPath:@"name"];

    对于监听对象,无需实现不论什么代理,由于他是NSObject的派生类

    仅仅要在.m文件里实现例如以下方法就可以监听:

    #pragma mark keyPath:对象属性 object:对象 change:存取值保存的字典
    -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    {
    }




  • 相关阅读:
    VBoxManage命令详解
    十条nmap常用的扫描命令
    2015-12-16 第八天笔记整理-第二部分
    2015-12-13 第八天笔记整理-第一部分
    2015-12-06 第七天课程笔记
    2015-12-04 学习笔记整理
    2015-11-22 第五天
    选择控制语句和循环结构
    数据类型和运算符
    常用DOS指令
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5203734.html
Copyright © 2020-2023  润新知