zoukankan      html  css  js  c++  java
  • KVC KVO

    1.KVC

    KVC是Key-Value-Coding的简称,它是一种可以直接通过字符串的名字(key)来访问类属性(实例变量)的机制。而不是通过调用Setter、Getter方法访问。当使用KVO、Core Data、CocoaBindings、AppleScript(Mac支持)时,KVC是关键技术。

        Person * xw = [[Person alloc]init];

            Dog *dg = [[Dog alloc]init];

            //使用kvc设置成员变量的值

            //使用之前必须得知道变量的名

            [xw setValue:@"xiaowang" forKey:@"name"];

            NSString * name = [xw valueForKey:@"name"];

            NSLog(@"%@",name);

            //设置对象里的某个类的某个属性

            //确定类的对象是存在的

            [xw setValue:dg forKey:@"dg"];

            [xw setValue:@"wangwang" forKeyPath:@"dg.dogName"];

            NSString * dname = [xw valueForKeyPath:@"dg.dogName"];

            NSLog(@"%@",dname);

    2.KVO

    KVO,即:Key-Value-Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。

    系统框架已经支持KVO,所以程序员在使用的时候非常简单。

    1. 注册,指定被观察者的属性,

    2. 实现回调方法

    3. 移除观察

    -(instancetype)init{

        if (self =[super init]) {

            self.card = [[[Card alloc]init]autorelease];

            //监听器监听cardmoney的变化

            [self addObserver:self forKeyPath:@"card.money" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];

        }

        return self;

    }

    //回调

    -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{

        

        NSLog(@"%d",[[change objectForKey:NSKeyValueChangeOldKey]intValue]);

        NSLog(@"%d",[[change objectForKey:NSKeyValueChangeNewKey]intValue]);

    }

    //销毁

    -(void)dealloc{

        [self removeObserver:self forKeyPath:@"card.money"];

        [super dealloc];

    }

  • 相关阅读:
    Dubbo与Eureka
    对称加密与非对称加密
    [转] SpringBoot2.0集成WebSocket,实现后台向前端推送信息
    [转] Druid简介(Spring Boot + Mybatis + Druid数据源【自己定制】)
    [转] rsync+inotify实现文件实时同步
    [转] windows server 几大实时同步软件比较
    [转] Springboot 整合RabbitMq ,用心看完这一篇就够了
    [转] Windows环境下部署RabbitMQ
    [转] 分布式缓存 Redis 集群搭建
    [转] 吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
  • 原文地址:https://www.cnblogs.com/huoran1120/p/5150695.html
Copyright © 2011-2022 走看看