KVC 键值编码 权限非常强大,可以访问对象属性,包括私有

本文深入探讨了Objective-C中的键-编码(KVC)机制,解释了其如何通过字符串名称直接访问类属性,以及如何在访问属性时优先调用set/get方法。通过示例展示了如何在类中实现KVC兼容性,并提供了KVC的基本用法和数据类型支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

键值编码 权限非常强大,可以访问对象属性,包括私有 一般不推荐使用破坏了封装性.KVC 设置时如果此属性有 set get 方法就优先调用,否则 set get.


KVC 键值编码 是 KeyValue Coding 的简称,它是一种可以直接通过字符串的名字(key)来访问类属性的机制.使用该机制不需要调用存取方法和变量实例就可以访问对象属性.本质上讲,键-值编码定义了你的程序存取方法需要实现的样式及方法签名.


在应用程序中实现键-值编码兼容性是一项重要的设计原则.存取方法可以加强合适的数据封装,而键-值编码方法在多数情况下课简化程序代码.


键-值编码方法在 Objective-C 非标准协议(类目)NSKeyValueCoding 中被声明,默认的实现方法由 NSObjective 提供.


键-值编码支持带有对象值的属性,同时也支持纯数值类型和结构,非对象参数和返回类型会被识别并自动封装/解封.


例:定义一个类

.h 文件

@interface Person :  NSObject{

@private

             NSString *_name;

}

@end

.M 文件 覆写description方法

-(NSString *)description {

               NSString *s = [NSString stringWithFormat: @"name=%@",_name];

               return s;

}

@end

main.m 方法

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

//通过 KVC 对属性设置

[p setValue:jack forKey:@"name";   // value 属性的值     .key 是属性名  这里和之前的_ name 不一样,没待下划线,但可以用,这里的机制是先找xxx 和找不到就找_ xxx

NSLog(@"%@",p);


//基本数据类型设值,要转成 NSNumber  //@22 而不能直接写22

[p setValue:@22 forKey@"age"


//通过 KVC 获取属性值

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

NSLog(@"name = %@", name);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值