OC学习之点语法

点语法的本质还是进行赋值和取值  也就是说点语法 最终自己会去调用属性的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];



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值