KVC

2016-10-31  本文已影响4人  nothing_c

//KVC key valve coding (键值编码)

//优点:不用set .get方法给成员变量{}赋值;间接给属性赋值;减少代码量.封装model类

//缺点:编译时不报错,运行时报错

//使用的时候,注意key不要写错

//1.

//如果输出id类型的数据,需要用%@,占位符

//测试kvc是先访问带下划线的属性,如果没有才访问不带下划线的属性

//如果键写错了,编译时不报错,运行时报错

//2.

//间接给属性赋值

//car是people的属性

//name是car的属性

//car需要在people类中初始化

///forKeyPath是关键

//使用valueForKeyPath的时候需要初始化car

//3.

//如果字典中存在该类不存在的属性,要去类的.m中重写不然运行会崩溃

//重写系统的方法(对于多出来的键值对,运行时才不会崩溃)

//- (void)setValue:(id)value forUndefinedKey:(NSString *)key

//对于属性多的model,可批量处理,给属性赋值,减少代码量

//在.m赋值时可调用该方法[self setValuesForKeysWithDictionary:dic];

//4.

//copy和retain的区别

//copy的话,输出不会一致只是copy路径和数据,不会随之更新内容(深)

//retain的话,输出的内容是一致会随着赋值属性内容的改变而改变(浅)

//00000

//如果同时实现了set,get方法,需要在{}中声明_name属性

//成员变量没有实现set,get方法,所以不会调用

//以kvc的方式给属性name赋值,会调用set,get方法

上一篇下一篇

猜你喜欢

热点阅读