Objective c 手动实现@property

Objective c 手动实现@property,objective-c,properties,automatic-ref-counting,Objective C,Properties,Automatic Ref Counting,当手动实现@property而不是使用@synthesis时,是否必须包含ARC代码 可以这样实施吗: @synthesize var1; - (void)setvar1:(NSObject *)newVar1 { var1 = newVar1; } 或者您必须在ARC下包含保留,释放等吗?您不必(事实上不能)手动保留或释放变量。除了在setVar1:中需要大写V之外,您的实现在ARC下是完全可以接受的。使用ARC时,您不能编写手动使用retain、release等的代码。因此,如果

当手动实现@property而不是使用@synthesis时,是否必须包含ARC代码

可以这样实施吗:

@synthesize var1;

- (void)setvar1:(NSObject *)newVar1
{
    var1 = newVar1;
}

或者您必须在ARC下包含
保留
释放
等吗?

您不必(事实上不能)手动
保留
释放
变量。除了在
setVar1:
中需要大写V之外,您的实现在ARC下是完全可以接受的。

使用ARC时,您不能编写手动使用
retain
release
等的代码。因此,如果您选择手动实现属性getter和setter,并且启用了ARC,则不必包含额外的内存管理代码。

您所称的“ARC代码”(
retain
release
,等等)实际上是手动引用计数,而不是自动计数

如果编译时没有弧,则需要
保留
或根据需要复制对象。如果您在ARC下,编译器将为您处理它。具体来说,如果声明了
\uu strong
,编译器将保留
newVar1