3

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

可以这样实现吗:

@synthesize var1;

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

或者你必须包括retainrelease

4

3 回答 3

2

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

于 2012-10-19T02:31:55.230 回答
1

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

于 2012-10-19T02:32:11.890 回答
1

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

如果您在没有 ARC 的情况下进行编译,则需要根据需要retain复制或复制对象。如果您在 ARC 下,编译器会为您处理它。具体来说,编译器将保留newVar1if var1is declared __strong

于 2012-10-19T02:36:14.413 回答