1、点语法: 对象.属性名
点语法不是直接访问实例变量,Xcode看到点语法后,会帮我们自动替换成调用set方法和get方法
例:
注意:点语法到底是替换成get方法还是set方法,一般取决于点语法出现在等号左侧还是右侧(是设置值还是取值)
若点语法出现在等号右侧时,则替换get方法;若点语法出现在等号左侧时,则替换set方法。
Person *p=[Person new];
int a=p.age;//调用get方法
NSString *s=p.name;//调用get方法
p.age=25;//调用set方法
p.name=@"junjun";//调用set方法
2、点语法的陷阱
1)、用self和点语法连用,会造成死循环。
例:
-(void)setAge:(int)age{
self.age=age;
}
这样会造成死循环,上述相当于:
-(void)setAge:(int)age{
[self setAge:age];
}
2)、在get方法中,使用self和点语法也会造成死循环
例:return self.age;相当于是[self age];//造成死循环
3、点语法的注意事项
点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法。切记:点语法时转换成相应的set和get方法,若没有set和get方法,则不能使用点语法。 |
|