我已经了解 什么是使用ARC的优势和劣势?
从What are the advantages and disadvantages of using ARC?
但是我仍然怀疑在自动引用计数(ARC)。
我在这里有一些疑问。
如果ARC处于活动状态,我们不希望手动进行发布操作?
自动进行垃圾自动收集和内存管理吗?
请问任何人请澄清我的想法。
我已经了解 什么是使用ARC的优势和劣势?
从What are the advantages and disadvantages of using ARC?
但是我仍然怀疑在自动引用计数(ARC)。
我在这里有一些疑问。
如果ARC处于活动状态,我们不希望手动进行发布操作?
自动进行垃圾自动收集和内存管理吗?
请问任何人请澄清我的想法。
ARC不是垃圾收集器。苹果将其描述为:
自动引用计数(ARC)是一个编译器级的功能, 简化了Cocoa应用程序管理对象生命周期(内存 管理)的过程。
因此,ARC只是在编译时添加保留/释放调用。 这有助于开发人员节省时间并跳过写入dealloc和其他内存管理调用。
即使ARC有很多帮助,这并不意味着开发人员应该忽略内存管理。有时候,这种情况很少发生,但是它发生了,ARC无法弄清楚该做什么并可能产生意想不到的行为。这绝对是一个很好的工具,但最好在启动它之前理解Objective-C中的整个内存管理例程,并让它发挥它的魔力。
我必须同意。了解内存管理正在增强功能,并且您拥有更多控制权。 – Jeremy 2012-03-13 15:35:36
@junior B:感谢您的深入了解 – 2012-03-13 16:23:56
欢迎您,我忘了提及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
要回答我们不想做手工释放的具体问题
,如果ARC是活跃?
不,事实上,当您使用ARC时,使用retain,release或autorelease将会是编译器错误。
是否自动进行垃圾自动收集和内存管理?
它的实际做法是使用铛静态分析器来为你保留和释放,所以它是一种垃圾收集,但不像传统的垃圾收集器。在这方面,它就像一个垃圾收集器,因为您不必担心自己的保留和释放,但另一方面,与真正的垃圾收集器不同,强参考周期(以前称为保留周期)将仍然导致泄漏。
感谢信息 – 2012-03-13 16:29:18
你所描述的文章几乎总结了它很好。也就是说,如果您不希望手动管理引用计数,那么启用ARC并且您不必。 – Jeremy 2012-03-13 15:24:19
@Caleb:我之前没有找到提及的链接。对不起,重复它。 – 2012-03-13 16:22:50
@Ramshad没问题 - 这就是我指出的原因。这个问题可能会被重复关闭。这并不意味着这不是一个好问题,只是它已经被问及回答。关闭重复项有助于良好的答案在一个地方积累,并使他们更容易找到。 – Caleb 2012-03-13 16:28:06