2012-03-13 107 views
1

可能重复:
iOS: to ARC or not to ARC? Pros and Cons更多详细资料(ARC)

我已经了解 什么是使用ARC的优势和劣势?

What are the advantages and disadvantages of using ARC?

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

我在这里有一些疑问。

如果ARC处于活动状态,我们不希望手动进行发布操作?

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

请问任何人请澄清我的想法。

+0

你所描述的文章几乎总结了它很好。也就是说,如果您不希望手动管理引用计数,那么启用ARC并且您不必。 – Jeremy 2012-03-13 15:24:19

+0

@Caleb:我之前没有找到提及的链接。对不起,重复它。 – 2012-03-13 16:22:50

+0

@Ramshad没问题 - 这就是我指出的原因。这个问题可能会被重复关闭。这并不意味着这不是一个好问题,只是它已经被问及回答。关闭重复项有助于良好的答案在一个地方积累,并使他们更容易找到。 – Caleb 2012-03-13 16:28:06

回答

2

ARC不是垃圾收集器。苹果将​​其描述为:

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

因此,ARC只是在编译时添加保留/释放调用。 这有助于开发人员节省时间并跳过写入dealloc和其他内存管理调用。

即使ARC有很多帮助,这并不意味着开发人员应该忽略内存管理。有时候,这种情况很少发生,但是它发生了,ARC无法弄清楚该做什么并可能产生意想不到的行为。这绝对是一个很好的工具,但最好在启动它之前理解Objective-C中的整个内存管理例程,并让它发挥它的魔力。

+1

我必须同意。了解内存管理正在增强功能,并且您拥有更多控制权。 – Jeremy 2012-03-13 15:35:36

+0

@junior B:感谢您的深入了解 – 2012-03-13 16:23:56

+0

欢迎您,我忘了提及ARC不处理Core Foundations对象(如Core Graphics,地址簿中的联系人等)的事实。这个问题和详细的答案应该有所帮助:[ARC是否与Core Graphics对象一起工作?](http://stackoverflow.com/questions/7800174/does-arc-work-with-core-graphics-objects) – bontoJR 2012-03-13 21:29:44

1

要回答我们不想做手工释放的具体问题

,如果ARC是活跃?

不,事实上,当您使用ARC时,使用retain,release或autorelease将会是编译器错误。

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

它的实际做法是使用铛静态分析器来为你保留和释放,所以它是一种垃圾收集,但不像传统的垃圾收集器。在这方面,它就像一个垃圾收集器,因为您不必担心自己的保留和释放,但另一方面,与真正的垃圾收集器不同,强参考周期(以前称为保留周期)将仍然导致泄漏。

+0

感谢信息 – 2012-03-13 16:29:18