需要再次强调的是,这取决于上下文。在非 ARC(自动引用计数)情况下:
@property (nonatomic, copy) NSMutableArray *myArray
@property (nonatomic, copy) NSString *myString
@property (nonatomic, retain) UIColor *myColor
@property (nonatomic, assign) int myInt
@property (nonatomic, assign) BOOL myBOOL
在我的Array上的拷贝是为了防止另一个"owner"修改你设置的对象。在ARC项目中,情况会有所改变:
@property (nonatomic, copy) NSMutableArray *myArray
@property (nonatomic, copy) NSString *myString
@property (nonatomic, strong) UIColor *myColor
@property (nonatomic, assign) int myInt
@property (nonatomic, assign) BOOL myBOOL
在您的情况下,变化主要是针对 myColor 属性。由于您不直接管理引用计数,因此不需要使用 retain
。而 strong
关键字是一种声明对该属性“拥有权”的方式,类似于 retain
。还提供了另一个关键字 weak
,通常用于对象类型而非赋值。苹果公司常见的 weak
属性示例是委托(delegate)。我建议您除了查看 Memory Management Guide,还应多次阅读 Transitioning to ARC Release Notes,因为其中包含的细微差别远不止可以在 SO 帖子中轻易解释清楚。