几个月前,当我开始为iOS开发应用程序(我是经验丰富的Java开发人员)时,我在iOS上经验丰富的同事警告我要远离ARC(因为他们声称它有点儿车)。现在我对MRR很满意。但是,如果确实值得,我想继续使用ARC。查看Apple的文档,"About Memory Management"。我找到了:
“如果您打算为 iOS 编写代码,则必须使用显式内存管理”
所以我仍然很困惑是否要去ARC。我只关注iOS(不是Mac开发)。
感谢。
答案 0 :(得分:12)
您的同事对iOS没有经验。 ARC不是马车。每个经验丰富的iOS开发人员都听说过ARC在批准条款时已经这么做了。我有超过三年的iOS经验,我强烈推荐ARC,只要你真正理解幕后发生了什么。 Apple自己,在你链接的指南中说:
强烈建议您将ARC用于新项目。
当Apple说您必须使用显式内存管理时,他们将传统的手动内存管理和ARC组合在一起作为显式内存管理,与垃圾收集相反。
另外,请注意您链接到Mac开发人员库中的文档,而不是iOS开发人员库。如果您需要为iOS开发,请使用iOS开发人员库。
答案 1 :(得分:2)
我个人的观点是,您应该开始学习使用ARC并在您自己的项目中实施它们(除非出于某种原因,您的客户/老板并不想要)。正在创建越来越多的库并将其转换为使用ARC。 Apple还建议您在自己的项目中使用ARC(参见Jim的回答)。虽然我必须坚持任何开始学习objective-c和iOS的人都应该熟悉传统的内存管理,然后再去ARC。另外,您可以查看此answer。
答案 2 :(得分:2)
选择ARC,因为它在某些情况下会提升应用程序的性能,请阅读下面的博客
http://www.learn-cocos2d.com/2011/11/everything-know-about-arc/
http://longweekendmobile.com/2011/09/07/objc-automatic-reference-counting-in-xcode-explained/
http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1
还有更多
答案 3 :(得分:2)
我是一位经验丰富的程序员,但从我的角度来看,ARC可以节省大量时间,因为您不必担心retain
/ release
个对象并实现{{ 1}}方法。此外,它还允许您根据对象图进行思考。在这种情况下,您需要注意应用程序中的循环。
那里有很多关于如何迁移到ARC的教程。这是我的最爱:
答案 4 :(得分:1)
如果您对MMR有经验并且可能意识到任务记忆管理可能会变得多么繁琐。使用ARC时,不需要保留和释放呼叫,不仅在许多情况下,ARC可以显着提高性能。
就个人而言,我觉得如果你在你的代码中使用了很多C库,那么ARC现在使用起来有点困难(所以如果你主要使用第三方C库和像CoreFoundation这样的东西,您可能会考虑是否有意义),但即便如此,如果这些库大多与您的Objective-C控制器隔离,那么ARC仍然很好。
请遵循以下指南:http://www.learn-cocos2d.com/2011/11/everything-know-about-arc/