上一回咱们学到了一些ARC的基本概念,这一次咱们来看看ARC对@property的使用规则有何影响。 atom
咱们先来看看与全部权有关系的属性,关键字间的对应关系。 spa
属性值 | 关键字 | 全部权 |
---|---|---|
strong | __strong | 有 |
weak | __weak | 无 |
unsafe_unretained | __unsafe_unretained | 无 |
copy | __strong | 有 |
assign | __unsafe_unretained | 无 |
retain | __strong | 有 |
读写相关的属性有 readwrite 和 readonly 两种,若是使用ARC以后,我么须要注意一下 readonly 属性的使用。 code
好比下面的变量声明。 对象
@property (nonatomic, readonly) NSString *name;
通常声明为 readonly 的变量按理说应该不须要持有全部权了,可是在ARC有效的状况下,将出现下面的错误信息 : ip
“ARC forbids synthesizing a property of an Objective-C object with unspecified ownership or storage attribute” ci
若是定义了ARC有效,那么必需要有全部者属性的定义;因此咱们的代码改为这样,就OK了 it
@property (nonatomic, strong, readonly) NSString *name;
不过有一点,Scalar Varible的变量缺省都有 assign 的属性定义,因此不须要给他们单独的明示声明了。 table