我有纯ARC编码的经验。作为编译器功能,它尊重 Objctive-C 方法系列,在需要时放置正确的保留/释放调用。
所有以,开头的方法alloc
,并创建一个新对象。它们增加了保留计数。因此,当我不再需要它时,ARC 将释放任何指针(以及与之关联的对象)。mutableCopy
copy
new
我认为当我编写不遵循命名约定的方法时可能会出现问题。例如,如果我newCustomer
在第一个版本中编写这样的方法返回一个自动释放的对象,而在第二个版本中没有,会发生什么?
特别是,我的问题如下(它们属于相同的推理):
- 如果调用和被调用的代码都用 ARC 编译会发生什么?
- (a)如果调用代码使用 ARC 编译,而被调用代码使用非 ARC 编译,会发生什么情况?
- (b)如果调用代码使用非 ARC 编译,而被调用代码使用 ARC 编译,会发生什么情况?
如果答案显示了 ARC 如何在幕后工作( , 等),我们将不胜objc_release
感激objc_retainAutoreleasedReturnValue
。
先感谢您。