码迷,mamicode.com
首页 > 其他好文 > 详细

点语法

时间:2015-12-07 12:09:48      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

一:格式:对象名.属性名
此时(p.age)并不是直接访问实例变量
而是xcode 读取到点语法(p.age)后,会自动替换成set和get方法
p.age = 18; 点语法在 = 左边,则替换成set方法,p.age = 18等价于[p setAge : 18]

int a = p.age; 点语法在 = 右边,则替换成get方法,int a = p.age等价于[p age]

点语法实质上是xcode帮我们做的代码替换。

 

总结:p.age 到底是替换成get 方法还是set方法,一般取决于p.age出现在等号左侧还是右
设置值,还是取值


NSLog(@"%d", p.age); //此时为取值,所以调用get方法

二:点语法陷阱:

self.属性名

-(void)setAge : (int) newAge{
self.age = newAge;
}

//点语法的本质是方法调用,所以上相当于:
-(void)setAge:(int)newAge{
[self setAge:newAge];  //造成死循环
}

 在get方法中:

return self.age;  
//相等于
return [self age]; //也会造成死循环

 

点语法

标签:

原文地址:http://www.cnblogs.com/MY0101/p/5025419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!