ARC 和非 ARC 之间的区别

29 浏览
0 Comments

ARC 和非 ARC 之间的区别

作为一个对iOS新手来说,我需要了解自动引用计数(ARC)和非ARC之间的主要区别。我正在使用X-Code 3.2,所以需要知道区分ARC和非ARC的主要特点是什么?非常感谢您的帮助。谢谢。

0
0 Comments

在非ARC项目中,你必须自己控制几乎所有的内存操作(所有权、释放时间等)。另一方面,在启用ARC的项目中,大部分工作由系统完成。如果你是新手,那么现在可能应该暂时忽略非ARC项目,以后再回来研究。我知道如何在非ARC项目上工作,想知道是否会遇到任何问题。有一个软件问题需要升级,所以需要了解非ARC项目的优缺点。

0
0 Comments

自动引用计数(ARC)是在iOS 5 sdk中引入的,目的是通过将内存管理交给编译器来使Objective-C程序员无需处理内存管理问题。

使用ARC时,不再需要使用retain和release方法,而且在很多情况下,ARC还能显著提高性能。

ARC是新LLVM 3.0编译器的一个特性,它完全摒弃了所有iOS开发人员一直以来讨厌的手动内存管理。

在自己的项目中使用ARC非常简单。除了不再调用retain、release和autorelease方法之外,编程方式与平常没有什么不同。就是这么简单。

我的建议是使用ARC。

你可以参考这个链接:http://clang.llvm.org/docs/AutomaticReferenceCounting.html

有关在iOS项目中使用ARC的利弊,你可以阅读以下内容:

ARC程序的执行几乎与良好编写的MRC程序相同。也就是说,行为上的差异通常是无法察觉的,因为操作顺序和性能非常接近。

如果你已经知道如何使用手动引用计数(MRC)来实现OS X或iOS应用程序,那么ARC实际上并没有添加功能,它只是允许你从源代码中删除引用计数操作。

如果你不想学习MRC,那么你可以先尝试使用ARC。很多人对MRC的常规操作感到困惑或者选择忽略(例如,我向一些Objective-C开发者介绍了静态分析器)。如果你想避免这些问题,ARC可以让你推迟理解;无论是MRC、ARC还是GC,你都无法编写非平凡的Objective-C程序而不理解引用计数、对象生命周期和关系。ARC和GC只是从源代码中移除了这些实现,并在大多数情况下做了正确的事情。使用ARC和GC仍然需要一些指导。

如果你正在开发的程序对于引用计数的使用比较松散(例如,有典型数量的自动释放),切换到ARC可能会显著提高程序的执行时间和峰值内存使用量。

非常感谢,我会尽快升级到ARC。

0