如果没有 ARC,我会像这样编写 set 方法
- (void)setArr:(NSMutableArray *)arr
{
_arr = [arr retain];
}
但是 Xcode 在启用 ARC 时告诉我“'retain' 不可用:在自动引用计数模式下不可用”。
如果没有 ARC,我会像这样编写 set 方法
- (void)setArr:(NSMutableArray *)arr
{
_arr = [arr retain];
}
但是 Xcode 在启用 ARC 时告诉我“'retain' 不可用:在自动引用计数模式下不可用”。
_arr = arr;
这就是所有必要的。但实际上,根据您的代码示例,无需自己编写 setter。只需@property NSMutableArray *arr;
在头文件中声明就足以让编译器生成 setter 和 getter。在启用ARC的情况下进行编译时,编译器会为您生成保留和释放调用。
使用 arc 时,您所要做的就是让系统处理保留/释放,这意味着:
- (void)setArr:(NSMutableArray *)arr
{
_arr = arr;
}
但是,如果您的设置器像这样简单,那么让编译器合成它就更容易了。
以前您必须使用@synthesize,但现在将其声明为标题上的属性就足够了。
@property (strong, nonatomic) NSMutableArray *arr;