OC ___KVC

Key-Value-Coding:键值编码,是一种间接访问实例变量的方法,优势在于不通过setter和getter方法改变实例变量的值,而是有一套改变值的系统.

赋值原理:给定一个key,比如@"name":

 1.先查找对象中有没有对应的setName:方法, 如果有直接调用该方法为对象的实例变量赋值, 如果没有转步骤2

 2.再查找对象中有没有定义实例变量为_name, 如果有直接为该实例变量赋值, 否则转步骤3

 3.查找对象中有没有定义实例变量叫name, 如果有直接为该实例变量赋值, 否则转步骤4

 4.自动调用对象中的方法setValue:forUndefinedKey:


 KVC取值过程:调用valueForKey:, 给定一个key比如name

 1.查找对象中有没有对应的name方法(即get方法), 如果有则调用该方法返回对应的实力变脸的值, 如果没有转步骤2

 2.查找有有没有对应的_name实例变量, 如果有直接取出该实例变量中存放的值, 否则转步骤3

 3.查找有没有对应的name实例变量, 如果有直接取出该实例变量中存放的值, 否则转步骤4

 4.自动调用对象中的方法valueForUndefinedKey: .    




使用KVC的时候要重写两个方法
- (void)setValue:(id)value forUndefinedKey:(NSString*)key;
- (id)valueForUndefinedKey:(NSString*)key;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值