更多有关自动参考计数(ARC)的详细信息

时间:2012-03-13 15:20:14

标签: iphone objective-c xcode automatic-ref-counting

  

可能重复:
  iOS: to ARC or not to ARC? Pros and Cons

我已经了解了 使用ARC有哪些优点和缺点?

来自What are the advantages and disadvantages of using ARC?

但是我仍然怀疑自动引用计数(ARC)。

我在这里有一些疑问。

如果ARC处于活动状态,我们不想手动执行此操作吗?

是自动进行自动垃圾收集和内存管理吗?

任何人都可以澄清我的想法。

2 个答案:

答案 0 :(得分:2)

ARC不是垃圾收集器。 Apple将其描述为:

  

自动引用计数(ARC)是一种编译器级功能   简化了管理对象生命周期的过程(内存   管理)在Cocoa应用程序中。

所以ARC做的只是在编译时添加保留/释放调用。 这有助于开发人员节省时间并跳过deallocs和其他内存管理调用的编写。

即使ARC有很多帮助,但这并不意味着开发人员应该忽略内存管理。有时,这种情况很少见,但确实如此,ARC无法弄清楚该做什么并可能产生意外行为。它绝对是一个很棒的工具,但最好先了解Objective-C中的整个内存管理例程,然后再激活它,让它发挥其神奇作用。

答案 1 :(得分:1)

回答具体问题

  

如果ARC处于活动状态,我们不想手动执行此操作吗?

不,实际上当您使用ARC时使用保留,释放或自动释放是一个编译器错误。

  

是自动进行自动垃圾收集和内存管理吗?

它实际上做的是使用clang静态分析器为你保留和释放,所以它是一种垃圾收集,但不像传统的垃圾收集器。在这方面,它就像一个垃圾收集器,因为你不需要担心自己的保留和释放,但另一方面,与真正的垃圾收集器不同,强大的参考周期(以前称为保留周期)将仍然会造成泄密。