iOS 5最佳实践(发布/保留?)

时间:2011-06-10 15:19:16

标签: iphone ios ios5 memory-management automatic-ref-counting

作为一名初学iPhone程序员,编写iOS 5或更早版本的应用程序的最佳做法是什么?具体来说,我应该继续使用数据的发布/保留,还是应该忽略它?这有关系吗?

7 个答案:

答案 0 :(得分:171)

对于仍然对如何关闭单个文件的ARC感兴趣的人来说,这就是我所做的:

  1. 转到Build Phases > Compile Sources
  2. 下的项目设置
  3. 选择要禁用ARC的文件,然后添加 -fno-objc-arc 编译器标志。您可以通过选择文件然后点击“Enter”键一次为多个文件设置标志。
  4. 我不知道这是否是推荐方式,但它对我有用。

    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   面板,然后单击“完成”。

enter image description here

请参阅完整的转换指南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>构建阶段>编译来源