我应该在Objective-C中使用ARC吗?

10

看一下OS 10.7的发布说明,有一些关于使用自动引用计数(ARC)来简化内存管理的内容。我即将开始一个新的Cocoa项目,并想知道是否值得使用这个模型(据我了解,您不能混合使用ARC和不使用ARC)。

两难的问题似乎是使用新东西还是使用可能会节省大量调试时间的东西。但情况真的是这样吗?有人尝试过使用它并没有发现实际的益处吗?


Mac OS X(我可能还会将其设置为10.7+,以便我可以利用所有新的API) - Jack James
2个回答

14

毫无疑问地,你应该使用ARC。ARC会在最合适的时候注入retain release调用,因此实际上您可能会看到比不使用ARC更低的平均内存使用率。

我使用过ARC,它非常强大。您将停止遇到随机崩溃,您的应用程序也会感觉更加响应。正如他们在WWDC上所说,没有理由不使用自动引用计数。

此外,您可以在与ARC文件相同的项目中使用非ARC文件。


此外,使用ARC开始编写应用程序比以后转换更容易。 - jbtule
3
ARC 可以向后兼容至 iOS 4.0。事实上,苹果发布的 WWDC 应用程序是第一个使用 ARC 的 iOS 应用程序。 - FreeAsInBeer
1
@jbtule:当然。这样你就不会浪费时间调试愚蠢的内存管理问题了。不过我必须说,ARC迁移工具使这变得相当容易。 - FreeAsInBeer
@FreeAsInBeer 谢谢,我得在开始之前先研究一下 ARC。虽然 ARC 听起来不错,但在重构整个项目之前,我会慢慢来! - mjisrawi
2
@FreeAsInBeer - 我不是在反对,但是文档和邮件列表给我传递的信息有些混乱。对我来说,并不清楚每个人是否都应该立即将所有内容转换为ARC(我不是指"我已经决定了",而是真正想理解这种情况)。在15年的Objective-C编程中,由于内存管理错误很少会出现'随机崩溃'。它确实可以使应用程序更具响应性吗?您的意思是仅通过打开菜单、单击按钮,就能区分 ARC 应用和非 ARC 应用吗? - hooleyhoop
显示剩余10条评论

5

我同意FreeAsInBeer关于使用ARC的观点。然而,不应该使用垃圾回收(GC)。看起来苹果将把重点放在ARC上,让GC慢慢消亡。这很好,因为ARC显然是一种更优秀的技术,而GC很慢且极其容易出错。

所以,是的,请使用ARC。远离GC。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接