【发布时间】:2012-06-17 23:09:24
【问题描述】:
奇怪的是,在 Big Nerd Ranch iOS 5 书 (p.73) 和 Programming iOS 5 书 (O'Reilly, p.314) (更新:甚至 Kochan 的 Objective-C 书第四版),在 ARC 的上下文中,他们说 properties 属性的默认值是 assign... 但是 Apple's documentation 说默认值是 strong。
我还尝试了一个简单的程序,如果我不指定strong,程序可以正常工作,如果我指定strong,它的工作方式相同,而当使用assign 时,编译器会显示一个警告,所以看起来默认确实是strong。
所以如果大多数时候,我们想要
@property (nonatomic, readwrite, strong) NSMutableArray *foo;
那么我们就可以写了
@property (nonatomic) NSMutableArray *foo;
因为其他两个(readwrite 和 strong)是默认的?
【问题讨论】:
-
Assign 仅与无 ARC 一起使用,这就是您收到编译器警告的原因。
-
但警告不是关于在 ARC 中使用
assign。它是关于对象将比通常预期的更早释放 -
assign与 ARC 下的unsafe_unretained相同。换句话说,行为与 MRC 下的 assign 相同。
标签: objective-c automatic-ref-counting