作为一名初学iPhone程序员,编写iOS 5或更早版本的应用程序的最佳做法是什么?具体来说,我应该继续使用数据的发布/保留,还是应该忽略它?这有关系吗?
答案 0 :(得分:171)
对于仍然对如何关闭单个文件的ARC感兴趣的人来说,这就是我所做的:
Build Phases > Compile Sources
我不知道这是否是推荐方式,但它对我有用。
PS:我从clang.llvm.org here收集了这些信息,这些信息可以公开访问,因此不属于NDA。
答案 1 :(得分:99)
这取决于你。您可以使用ARC(自动引用计数)编写应用程序,Xcode将编写“粘合代码”以允许启用ARC的应用程序在iOS 4上运行,无需修改。但是,某些事情不会起作用,最明显的许多库你可能希望(有时)抛出无数错误,在开发人员发布与ARC兼容的更新之前你将无法使用它们。
编辑:我最近发现您可以基于每个文件关闭ARC。见pixelfreak's answer。所以,我的建议仍然存在,但现在不需要更新第三方库来使用ARC。
以下是Apple关于选择退出ARC以获取特定文件的内容:
迁移项目以使用ARC时,-fobjc-arc编译器标志为 设置为所有Objective-C源文件的默认值。你可以禁用 使用-fno-objc-arc编译器标志的特定类的ARC 那个班。在Xcode中,在目标Build Phases选项卡中,打开Compile Sources组显示源文件列表。双击该文件 要为其设置标志,请在弹出窗口中输入-fno-objc-arc 面板,然后单击“完成”。
请参阅完整的转换指南here。
答案 2 :(得分:10)
iOS 5仍然属于NDA,可能会在他们发布公开版本之前。如果您有开发者帐户,请转到Apple Developer Forums并在那里询问。
对于以前的版本,您必须计算引用并相应地保留和释放。查看Memory Management guide。
修改:这是public spec for Automatic Reference Counting以及public iOS 5 page的引用:
Objective-C的自动引用计数(ARC)使内存管理成为编译器的工作。通过使用新的Apple LLVM编译器启用ARC,您将永远不需要再次键入retain或release,从而大大简化了开发过程,同时减少了崩溃和内存泄漏。编译器完全了解您的对象,并在不再使用的瞬间释放每个对象,因此应用程序运行速度与以往一样快,具有可预测的平滑性能。
答案 3 :(得分:4)
目前,NDA的细节很清楚,但是Apple已经在iOS 5中实现了自动引用计数(ARC),详见此处:http://developer.apple.com/technologies/ios5/
如果您使用iOS 5 SDK在Xcode 4中开发新应用程序,则可以放心地忽略保留/释放计数。
[编辑] sudo rm -rf提出了一个很好的观点;第三方库可能会受到严重影响
答案 4 :(得分:3)
没有人提到 SystemConfiguration.framework ? 请不要忘记将其放入框架。 我悲惨地花了几个小时来实现它。
答案 5 :(得分:3)
这当然是开发人员或团队的选择。 ARC (自动参考计数器)通过自动管理内存使事情变得更容易。它将在适当时释放,保留和释放。我相信你应该在测试应用程序中获得自己管理内存的经验,如果你还没有。另一件需要考虑的事情是您的应用程序是否依赖于第三方库,如果未转换为ARC,则会阻止您的应用程序进行编译。选择显然取决于手头的情况。
答案 6 :(得分:0)
在项目设置中将标志设置为-fno-objc-arc>构建阶段>编译来源