ARC和非ARC之间的差异

时间:2014-03-14 10:29:24

标签: objective-c automatic-ref-counting

作为iOS的新手,我需要知道ARC和非ARC之间的主要区别。 我使用的是X-Code 3.2,那么需要了解ARC的主要特征,以区别于非ARC吗? 任何帮助表示赞赏。 谢谢。

2 个答案:

答案 0 :(得分:1)

iOS 5 sdk中引入了自动引用计数(ARC),使Objective-C程序员不必通过将内存管理作为编译器的工作来处理内存管理。

使用ARC时,不需要保留和释放呼叫,不仅在许多情况下,ARC可以显着提高性能。

ARC是新LLVM 3.0编译器的一项功能,它完全取消了所有iOS开发人员都喜欢的手动内存管理。

在您自己的项目中使用ARC非常简单。除了不再调用retain,release和autorelease之外,你会像往常一样继续编程。这基本上就是它的全部内容。

我的建议是使用ARC。

供您参考,您可以阅读: -

http://clang.llvm.org/docs/AutomaticReferenceCounting.html

What are the pros and cons of using the ARC in an iOS project?

ARC程序的执行与编写良好的MRC几乎完全相同。也就是说,行为差异通常是不可检测的,因为操作顺序和性能都非常接近。

如果您已经知道如何使用手动引用计数(MRC)实现OS X或iOS应用程序,ARC并不真正添加功能 - 它只允许您从源中删除引用计数操作。

如果您不想学习MRC,那么您可能需要先尝试ARC。很多人都在努力或者试图忽略MRC的常见做法(例如:我已经向静态分析器引入了许多objc开发)。如果你想避免这些问题,ARC将允许你推迟你的理解;如果不了解引用计数和对象生命周期和关系,无论是MRC,ARC还是GC,都不能编写非平凡的objc程序。 ARC和GC只是从您的源中删除实现,并在大多数情况下做正确的事情。使用ARC和GC,您仍需要提供一些指导。

如果您正在开发的程序使用引用计数相当松散(例如,典型的自动释放量),切换到ARC可以真正改善程序的执行时间和峰值内存使用量。

答案 1 :(得分:0)

简单的答案是,在非ARC项目中,您必须自己控制几乎所有内存操作(所有权,发布时间等)。另一方面,在ARC启用的项目中,大多数工作由系统完成。您可以通过评论中给出的链接阅读更多内容。如果你是新手,那么你可能现在应该省略非ARC项目并稍后返回。