当手动实现@property 而不是使用@synthesize 时,是否必须包含ARC 代码?
可以这样实现吗:
@synthesize var1;
- (void)setvar1:(NSObject *)newVar1
{
var1 = newVar1;
}
或者你必须包括retain
等release
?
当手动实现@property 而不是使用@synthesize 时,是否必须包含ARC 代码?
可以这样实现吗:
@synthesize var1;
- (void)setvar1:(NSObject *)newVar1
{
var1 = newVar1;
}
或者你必须包括retain
等release
?
在 ARC 下,您不必(实际上也不能)手动retain
或release
变量。除了需要大写 V in 之外,您的实现setVar1:
在 ARC 下是完全可以接受的。
使用 ARC 时,您不能编写手动使用retain
、release
等的代码。因此,如果您选择手动实现属性 getter 和 setter,并且启用了 ARC,则不必包含额外的内存管理代码。
您所说的“ARC 代码”(retain
,release
等)实际上是手动引用计数,而不是自动的。
如果您在没有 ARC 的情况下进行编译,则需要根据需要retain
复制或复制对象。如果您在 ARC 下,编译器会为您处理它。具体来说,编译器将保留newVar1
if var1
is declared __strong
。