美文网首页
KVC&KVO的部分应用

KVC&KVO的部分应用

作者: Mustard_Buli | 来源:发表于2016-03-16 14:27 被阅读32次

KVC
  KVC实际上是Key-Value Coding的简称,它是一种可以直接通过字符串的名字(key)来间接访问类属性(实例变量)的机制。
 代码实现:

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Dog.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Person *xiaoming = [[Person alloc] init];
        
        //使用kvc设置变量的值
        [xiaoming setValue:@"xm" forKey:@"name"];
        
        NSString *name = [xiaoming valueForKey:@"name"];
        NSLog(@"%@", name);
        
        //确保狗是存在的
        Dog *ww = [[Dog alloc] init];
        [xiaoming setValue:ww forKeyPath:@"dg"];
        
        [xiaoming setValue:@"汪汪" forKeyPath:@"dg.dogName"];
        NSLog(@"%@", [xiaoming valueForKeyPath:@"dg.dogName"]);
    }
    return 0;
}
P.S. kvc是一种间接的访问,这里特别要注意的是:key值,也就是变量的名字一定不可以写错!#

KVO

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

代码实现:(MRC)

#import "Person.h"

@implementation Person

- (void)dealloc{
    [_card release];
    [self removeObserver:self forKeyPath:@"card.money"];
    [super dealloc];
}
- (instancetype)init{
    if (self = [super init]) {
        self.card = [[[CreditCard alloc] init] autorelease];
        
        [self addObserver:self forKeyPath:@"card.money" options:NSKeyValueObservingOptionOld| NSKeyValueObservingOptionNew context:nil];
    }
    return self;
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
    NSLog(@"old:%@", [change objectForKey:NSKeyValueChangeOldKey]);
    NSLog(@"new:%@", [change objectForKey:NSKeyValueChangeNewKey]);

}

@end

相关文章

  • KVC&KVO的部分应用

    KVCKVC实际上是Key-Value Coding的简称,它是一种可以直接通过字符串的名字(key)来间接访问...

  • KVC&KVO

    一.KVC 1.KVC即Key-value coding Key-value coding is a mechan...

  • KVC&KVO

    基本概念 KVC (Key-value coding) C#中可以通过反射读写一个对象的属性,有时候这种方式特别方...

  • KVC&KVO

    KVC(key-value coding) 概要 KVC允许开发者通过名字访问属性,无需调用明确的存取方法,这样开...

  • KVC&KVO

    KVC(Key Value Coding) 既是指NSKeyValueCoding,提供一种机制来间接访问对象的属...

  • iOS【KVC&KVO】

    kvc 1. KVC 1.1 KVC概念 KVC全称是Key Value Coding,定义在NSKeyValue...

  • KVC&KVO(1)

    键值编码的优点: 基于配置的属性访问。 降低耦合性。 简化代码。使用键值编码更新模型的状态。

  • KVC KVO高阶应用

    KVC KVO高阶应用 KVC KVO高阶应用

  • iOS开发 -- KVO的实现原理与具体应用

    本文分为2个部分:概念与应用。概念部分旨在剖析 KVO 这一设计模式的实现原理;应用部分通过创建的项目,以说明 K...

  • KVC&KVO面试题

    人生就是一场战斗 KVC(Key-Value Coding)键值编码 1.1如何调用私有变量?如何修改系统的只读属...

网友评论

      本文标题:KVC&KVO的部分应用

      本文链接:https://www.haomeiwen.com/subject/pzbqlttx.html