【发布时间】:2013-08-02 02:11:05
【问题描述】:
如果没有 ARC,我会像这样编写 set 方法
- (void)setArr:(NSMutableArray *)arr
{
_arr = [arr retain];
}
但启用 ARC 时 Xcode 告诉我“'retain' 不可用:在自动引用计数模式下不可用”。
【问题讨论】:
-
只要
_arr = arr;。为什么你还要像这样实现setter?让它合成就行了。 -
这不是一个很好的二传手。如果您先设置一个值,然后设置另一个值,则在 ARC 之前,它会导致泄漏。
-
如果你以这种方式在没有 ARC 的情况下制作你的 setter,你可能会有相当大的内存泄漏。
-
谢谢提醒,忘记释放旧变量了,其实是在_arr = [arr retain];之前写了if(_arr){[arr release];}现在在 ARC 项目中是 _arr = arr;
标签: ios automatic-ref-counting