访问属性
访问属性也有语法糖,即。操作符。如果不使用@property,通过access方法访问实例变量,需要用标准的调用方法操作符[]:
[xxx userName];
[xxx setUserName:@"abc"];
但是如果用了@property,就可以使用。操作符来存取:
xxx.userName = "abc";
NSString *name = xxx.userName;
自动生成的实例变量命名规则
要记住,属性不是实例变量,而是根据属性会生成实例变量(和对应的access方法)。所以,属性名叫name,而实例变量的名字并不是name.在我这个环境ios7+xcode5,命名规则似乎是在属性前面加上_
比如
@property NSString* name;
生成的实例变量名将是_name
所以要访问这个实例变量,就有2种方法,或者使用。操作符
NSString *n = self.name;
这等价于:
NSString *n = [self name]
或者,直接使用实例变量名:
NSString *n = _name;
但是,由于文档中并没有明确说明这个命名规则,所以后者类似于潜规则。如果版本升级后,命名规则改变了,代码就需要重新编译。因此,使用。操作符,是更保险的做法。命名规则,只要知道就可以了