我已经了解了 使用ARC有哪些优点和缺点?
来自What are the advantages and disadvantages of using ARC?
但是我仍然怀疑自动引用计数(ARC)。
我在这里有一些疑问。
如果ARC处于活动状态,我们不想手动执行此操作吗?
是自动进行自动垃圾收集和内存管理吗?
任何人都可以澄清我的想法。
答案 0 :(得分:2)
ARC不是垃圾收集器。 Apple将其描述为:
自动引用计数(ARC)是一种编译器级功能 简化了管理对象生命周期的过程(内存 管理)在Cocoa应用程序中。
所以ARC做的只是在编译时添加保留/释放调用。 这有助于开发人员节省时间并跳过deallocs和其他内存管理调用的编写。
即使ARC有很多帮助,但这并不意味着开发人员应该忽略内存管理。有时,这种情况很少见,但确实如此,ARC无法弄清楚该做什么并可能产生意外行为。它绝对是一个很棒的工具,但最好先了解Objective-C中的整个内存管理例程,然后再激活它,让它发挥其神奇作用。
答案 1 :(得分:1)
回答具体问题
如果ARC处于活动状态,我们不想手动执行此操作吗?
不,实际上当您使用ARC时使用保留,释放或自动释放是一个编译器错误。
是自动进行自动垃圾收集和内存管理吗?
它实际上做的是使用clang静态分析器为你保留和释放,所以它是一种垃圾收集,但不像传统的垃圾收集器。在这方面,它就像一个垃圾收集器,因为你不需要担心自己的保留和释放,但另一方面,与真正的垃圾收集器不同,强大的参考周期(以前称为保留周期)将仍然会造成泄密。