OC学习之点语法
2016-03-28 21:53
148 查看
点语法的本质还是进行赋值和取值 也就是说点语法 最终自己会去调用属性的set方法 和get方法
当点语法在等号左边出现的时候 会调用该属性的set方法 其余的时候出现都是在调用该属性的get方法。
Child *child =[[Child alloc]init];
// 首先会去寻找这个类中与key对应的set方法 如果没有找到set方法 会继续寻找有没有一个_key的实例变量 继续没有找到 会找_isKey的实例变量 继续没有找到 会去找isKey的实例变量 如果还是没有找到 程序崩溃;
// 类内部的属性或者实例变量叫什么 key就写什么
// [child setValue:@"哈哈" forKey:@"name"];
// 通过KVC传入的是什么类型 取值就是什么类型 接收的属性或者实例变量 会根据自身的类型继续转换
// [child setValue:@"KVO" forKey:@"name"];
// NSLog(@"%@",[child valueForKey:@"name"]);
//// 可以给一个空值;
// [child setValue:nil forKey:@"name"];
// [child setValue:@18 forKey:@"age"];
// [child sayHi];
// 对象类型可以给空值 非对象类型不可以给空值 否则会程序崩溃;
// 如果非对象类型传入空值 实现:-(void)setNilValueForKey:(NSString *)key
//这个方法则不会导致崩溃;(空实现即可);
// [child setValue:@2 forKey:@"age"];
// [child sayHi];
// 如果类内部没有与key值对应的实例变量或属性 进行赋值 会导致程序崩溃
// 如果实现-(void)setValue:(id)value forUndefinedKey:(NSString *)key 这个方法则不会导致程序崩溃;(空实现)
// [child setValue:@"男" forKey:@"gender"];
/ 通过A类给B类的属性赋值 首先会找A类中有没有SetB的方法 在去寻找B类中有没有setName的方法通过寻找key值路径 来进行最终的赋值;
// A*a =[[A alloc]init];
// [a setValue:@"哇哈哈" forKeyPath:@"b.name"];
// [a sayHi];
当点语法在等号左边出现的时候 会调用该属性的set方法 其余的时候出现都是在调用该属性的get方法。
Child *child =[[Child alloc]init];
// 首先会去寻找这个类中与key对应的set方法 如果没有找到set方法 会继续寻找有没有一个_key的实例变量 继续没有找到 会找_isKey的实例变量 继续没有找到 会去找isKey的实例变量 如果还是没有找到 程序崩溃;
// 类内部的属性或者实例变量叫什么 key就写什么
// [child setValue:@"哈哈" forKey:@"name"];
// 通过KVC传入的是什么类型 取值就是什么类型 接收的属性或者实例变量 会根据自身的类型继续转换
// [child setValue:@"KVO" forKey:@"name"];
// NSLog(@"%@",[child valueForKey:@"name"]);
//// 可以给一个空值;
// [child setValue:nil forKey:@"name"];
// [child setValue:@18 forKey:@"age"];
// [child sayHi];
// 对象类型可以给空值 非对象类型不可以给空值 否则会程序崩溃;
// 如果非对象类型传入空值 实现:-(void)setNilValueForKey:(NSString *)key
//这个方法则不会导致崩溃;(空实现即可);
// [child setValue:@2 forKey:@"age"];
// [child sayHi];
// 如果类内部没有与key值对应的实例变量或属性 进行赋值 会导致程序崩溃
// 如果实现-(void)setValue:(id)value forUndefinedKey:(NSString *)key 这个方法则不会导致程序崩溃;(空实现)
// [child setValue:@"男" forKey:@"gender"];
/ 通过A类给B类的属性赋值 首先会找A类中有没有SetB的方法 在去寻找B类中有没有setName的方法通过寻找key值路径 来进行最终的赋值;
// A*a =[[A alloc]init];
// [a setValue:@"哇哈哈" forKeyPath:@"b.name"];
// [a sayHi];
相关文章推荐
- HNOI2006-鬼谷子的钱袋
- 计算机网络基础
- Type Fu(教你打字)
- 宿主iis部署wcf
- [CS231n-CNN] Linear classification II, Higher-level representations, image features, Optimization, stochastic gradient descent
- Type Fu(教你打字)
- 《C++》08 C++引用
- 判斷是否回文素數,輸出前N個回文素數
- Tomcat插件
- Android 仿当乐游戏详情页面(二)
- c语言:链队列的实现
- Qt获取本机地址
- Struts2<s:token>防止表单重复提交
- PADS设计规则
- cocos2d-x3.9 默认是 gnustl_static 配置,但是 这个库缺少c++的基础功能... c++_static 功能全面些
- 第三篇学习笔记
- java-helloworld
- 【杭电oj】2544 - 最短路(dijkstra)
- Centos下本地连接postgresql时出现认证错误的问题
- Cookie应用--显示看过的商品