您的位置:首页 > 其它

OC ___KVC

2015-07-25 19:26 253 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: