手动实现@property

时间:2012-10-19 02:28:27

标签: objective-c properties automatic-ref-counting

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

可以这样实现它:

@synthesize var1;

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

或者您是否必须包含retainrelease等?

3 个答案:

答案 0 :(得分:2)

在ARC下,您不必(实际上不能)手动retainrelease变量。除了在setVar1:中需要大写字母V之外,您的实施在ARC下完全可以接受。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

如果您正在编译没有ARC,则需要retain或根据需要复制对象。如果您在ARC下,编译器将为您处理它。具体而言,如果newVar1被声明为var1,编译器将保留__strong