1

如果没有 ARC,我会像这样编写 set 方法

- (void)setArr:(NSMutableArray *)arr
{
    _arr = [arr retain];
}

但是 Xcode 在启用 ARC 时告诉我“'retain' 不可用:在自动引用计数模式下不可用”。

4

2 回答 2

3

_arr = arr;这就是所有必要的。但实际上,根据您的代码示例,无需自己编写 setter。只需@property NSMutableArray *arr;在头文件中声明就足以让编译器生成 setter 和 getter。在启用ARC的情况下进行编译时,编译器会为您生成保留和释放调用。

于 2013-08-02T02:44:26.350 回答
0

使用 arc 时,您所要做的就是让系统处理保留/释放,这意味着:

- (void)setArr:(NSMutableArray *)arr
{
    _arr = arr;
}

但是,如果您的设置器像这样简单,那么让编译器合成它就更容易了。

以前您必须使用@synthesize,但现在将其声明为标题上的属性就足够了。

@property (strong, nonatomic) NSMutableArray *arr;
于 2013-08-02T02:50:26.337 回答