不需要@synthesize语句
在某个版本之前,对应@property,在implementation中需要写对应的@synthesize语句,来合成access方法,不过在一次升级之后,现在已经不再需要了
不需要重复声明实例变量
实际上,@property声明的是属性,并不是实例变量。但是编译器会根据属性,自动生成实例变量,和对应的access方法。所以已经在interface里声明了@property,就不再需要在implementation里再声明实例变量了。
自动生成的实例变量命名规则
要记住,属性不是实例变量,而是根据属性会生成实例变量(和对应的access方法)。所以,属性名叫name,而实例变量的名字并不是name。在我这个环境ios7+xcode5,命名规则似乎是在属性前面加上_
比如
@property NSString* name;
生成的实例变量名将是_name
所以要访问这个实例变量,就有2种方法,或者使用.操作符
NSString *n = self.name;
这等价于:
NSString *n = [self name]
或者,直接使用实例变量名:
NSString *n = _name;
但是,由于文档中并没有明确说明这个命名规则,所以后者类似于潜规则。如果版本升级后,命名规则改变了,代码就需要重新编译。因此,使用.操作符,是更保险的做法。命名规则,只要知道就可以了