手动实现@property而不是使用@synthesize时,是否必须包含ARC代码?
可以这样实现它:
@synthesize var1;
- (void)setvar1:(NSObject *)newVar1
{
var1 = newVar1;
}
或者您是否必须包含retain
,release
等?
答案 0 :(得分:2)
在ARC下,您不必(实际上不能)手动retain
或release
变量。除了在setVar1:
中需要大写字母V之外,您的实施在ARC下完全可以接受。
答案 1 :(得分:1)
使用ARC时,无法编写手动使用retain
,release
等的代码。因此,如果您选择手动实现属性getter和setter,并且启用了ARC,则不必包含额外的内存管理代码。
答案 2 :(得分:1)
您所谓的“ARC代码”(retain
,release
等)实际上是手动引用计数,而不是自动引用。
如果您正在编译没有ARC,则需要retain
或根据需要复制对象。如果您在ARC下,编译器将为您处理它。具体而言,如果newVar1
被声明为var1
,编译器将保留__strong
。