我还没有使用ARC,因为我正在研究的项目中的大部分代码都是在iOS 5.0之前编写的.
我只是想知道,手动保留/释放的便利性(以及可能因此产生的更可靠的代码?)是否超过使用ARC的任何"成本"?您对ARC有什么经历,您会推荐它吗?
所以:
假设对象A有一个属性:
@property (nonatomic, strong) Foo * bar;
Run Code Online (Sandbox Code Playgroud)
在实现中合成为:
@synthesize bar = _bar;
Run Code Online (Sandbox Code Playgroud)
对象B操纵a Foo **,如本示例中对象A的调用:
Foo * temp = self.bar;
[objB doSomething:&temp];
self.bar = temp;
Run Code Online (Sandbox Code Playgroud)
doSomething:方法的正确声明是什么?此外,假设在我有机会设置属性之前可以释放对象Bbar(从而获取指向的实例的所有权temp) - 我如何告诉ARC切换拥有的引用?换句话说,如果我想让以下示例代码段起作用,我将如何处理ARC问题?
Foo * temp = self.bar; // Give it a reference to some current value
[objB doSomething:&temp]; // Let it modify the reference
self.bar = nil; // Basically release whatever we have
_bar = temp; // Since we're …Run Code Online (Sandbox Code Playgroud)