使用ARC的优缺点是什么?[关闭]

2020/12/16 23:22 · ios ·  · 0评论

在iOS项目中使用新的自动引用计数(ARC)内存管理样式的优点和缺点是什么?

使用iOS 5.0 SDK开发时,可以选择不使用ARC吗?

您是否为新项目推荐ARC或手动参考计数(MRC)?

使用ARC的应用程序能否在iOS 5.0之前的操作系统版本上运行?

在iOS项目中使用新的自动引用计数(ARC)内存管理样式的优点和缺点是什么?

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

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

如果您不想学习MRC,则可以先尝试ARC。许多人都在为MRC苦苦挣扎,或者试图忽略它们的常见做法(例如:我向静态分析器介绍了许多objc开发人员)。如果您想避免这些问题,ARC将允许您推迟理解。您不能在不了解引用计数以及对象生存期和关系(无论是MRC,ARC还是GC)的情况下编写平凡的objc程序。ARC和GC只是从您的源代码中删除实现,并且在大多数情况下可以做正确的事情使用ARC和GC,您仍然需要提供一些指导。

我没有对此进行度量,但是值得一提的是,编译ARC源将花费更多的时间和资源。

如果您正在开发的程序对引用计数的使用比较宽松(例如,典型的自动发布数量),则切换到ARC可以真正改善程序的执行时间和峰值内存使用率。

使用iOS 5.0 SDK开发时,可以选择不使用ARC吗?

是的,使用CLANG_ENABLE_OBJC_ARC。ARC是二进制兼容的,而实际上发生的一切是,编译器会根据当前翻译的可见声明为您自动引入适当的引用计数操作(请参见此处的答案,了解翻译可见性为何如此重要) 。因此,您还可以为项目中的某些源启用和禁用它,并为其他源启用它。

但是,混合模式(某些MRC和某些ARC源代码)非常复杂,并且巧妙地体现了wrt的实现,这些实现可能会被编译器复制(例如,内联函数的主体可能不正确)。这样的混合模式问题将很难隔离。在这方面,ObjC ++程序和源将特别困难。此外,行为可能会因您的优化设置而异(例如)。在调试版本中完美运行的程序可能会在发行中引入漏洞或僵尸。

您是否为新项目推荐ARC或手动参考计数(MRC)?

就个人而言,我会坚持一段时间。即使已经在实际使用中对ARC进行了测试,在复杂的场景中仍然可能存在许多问题,您将希望避免成为第一个知道和调试的问题。OS X的垃圾收集是为什么您要等待的一个示例。例如,销毁对象时开关可能会发生变化-您的对象可能会更早销毁,并且永远不会放置在自动释放池中。它还可能会改变ivas的释放顺序,这可能会产生一些副作用。

我还有一个庞大的代码库,我不想为此花一个星期的时间来测试此功能。最后,向后兼容性对我来说仍然很重要。

使用ARC的应用程序能否在iOS 5.0之前的操作系统版本上运行?

如果使用MRC开发,它将向后兼容。如果使用ARC开发,则不一定兼容。实际上,没有一点额外的工作,它甚至可能无法编译。在某些早期版本中提供了运行时要求。 另请参阅此问题如果需要向后兼容,某些操作系统版本将无法选择ARC。

最后,如果要将选择限制在GC或ARC,我建议使用ARC。

您关闭/打开它的CLANG_ENABLE_OBJC_ARC = NO
好处是您只需编写更少的代码,内存管理就更容易。
缺点是您必须从头开始了解所有有关内存管理的知识:)我更喜欢将其关闭。

您可以通过“编辑->重构->转换为目标C Arc”来打开ARC,这将完全重构您的代码(摆脱所有的内存管理调用等)。没有逆运算,因此,如果您有其他想法,请确保已将事情控制在源代码控制之下。这个帖子向您展示如何禁用特定文件。我认为,除了看到良好的内存管理所付出的所有努力全部枯竭而痛苦,而且我们将不得不停止攀升到最高限度这一事实感到痛苦之外,没有太多的争论可做每次看到init,new,copy时都没有相应的发行版/自动发行版(这需要一些时间来习惯)。也许有人会说,在某些情况下,手动内存管理确实可以显着改善性能/内存占用量,如果这样的话,我也会对此感兴趣。

我正在使用Lion和xcode 4.3。我有同样的问题。

为了解决这个问题,我将“ Build Settings-> Objective-C Automatic Reference Co”设置为“ No”。

为了看到将其设置为“是”,我还必须启用“构建设置”工具栏正下方的工具栏上的“所有”和“级别”选项。

启用这些选项后,我可以看到我的项目将该选项设置为“是”。我花了一段时间才弄清楚,默认设置是“否”,直到启用“级别”选项后,此设置才会显示。

本文地址:http://ios.askforanswer.com/shiyongarcdeyouquedianshishenmeguanbi.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!