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

Gee*_*irl 109 iphone memory-management ios ios5 automatic-ref-counting

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

pix*_*eak 171

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

  1. 转到您的项目设置下 Build Phases > Compile Sources
  2. 选择要禁用ARC的文件并添加-fno-objc-arc编译器标志.您可以通过选择文件然后点击"Enter"键一次为多个文件设置标志.

我不知道这是否是推荐的方式,但它对我有用.

PS:我从clang.llvm.org收集这些可以公开访问的信息,因此不在NDA下.


sud*_*-rf 99

由你决定.您可以使用ARC(自动引用计数)编写应用程序,Xcode将编写"粘合代码"以允许启用ARC的应用程序在iOS 4上运行,无需修改.但是,某些事情不会起作用,并且最明显的许多库你可能希望(有时)抛出无数错误,在开发人员发布与ARC兼容的更新之前,你将无法使用它们.


编辑:我最近发现您可以基于每个文件关闭ARC.请参阅pixelfreak的回答.所以,我的建议仍然存在,但现在不需要更新第三方库来使用ARC.

以下是Apple关于选择退出ARC以获取特定文件的内容:

迁移项目以使用ARC时,-fobjc-arc编译器标志将设置为所有Objective-C源文件的缺省值.您可以使用该类的-fno-objc-arc编译器标志为特定类禁用ARC.在Xcode中,在目标Build Phases选项卡中,打开Compile Sources组以显示源文件列表.双击要为其设置标志的文件,在弹出式面板中输入-fno-objc-arc,然后单击"完成".

在此输入图像描述

请在此处查看完整的过渡指南.

  • 就在我最终掌握所有内存管理废话的时候,然后他们就把它变得无关紧要了.工作!!! (45认同)
  • ARC显然可以在"每个文件"的基础上关闭,也许允许使用遗留库...但我还没有使用它,所以我还不知道.不过我对此非常兴奋.你能想象一个iOS开发者不需要保留/释放的世界吗?我们在这里谈什么?;-) (15认同)
  • @Yar:是的,你是.我希望它很简单,但不幸的是并非所有的库都那么简单.以"JSONKit"为例.尝试通过ARC检查运行它.你会明白我的意思.;) (2认同)

nev*_*ing 10

iOS 5仍然在NDA之下,可能会在他们发布公开版本之前.如果您有开发人员帐户,请前往Apple Developer论坛并在那里询问.

对于以前的版本,您必须计算引用并相应地保留和释放.查看内存管理指南.

编辑:这是自动引用计数公共规范和来自公共iOS 5页面的引用:

Objective-C的自动引用计数(ARC)使内存管理成为编译器的工作.通过使用新的Apple LLVM编译器启用ARC,您将永远不需要再次键入retain或release,从而大大简化了开发过程,同时减少了崩溃和内存泄漏.编译器完全了解您的对象,并在不再使用它的瞬间释放每个对象,因此应用程序运行速度与以往一样快,具有可预测的平滑性能.

  • 实际上这并不完全正确.您可以使用ARC构建iOS 4.来自Apple工程师的引用:"*对于iOS 4和Mac OS 10.6,编译器会在您的应用程序中添加一些运行时兼容性粘合代码.这适用于除__weak变量之外的所有内容,这需要比兼容性代码所能提供的更多支持.ARC on iOS 4比非ARC代码简单,但它不像iOS 5上的ARC那么简单.*"顺便说一句,WWDC计划应用程序是用ARC编写的,它在iOS 4上工作就好了! (8认同)
  • 是的; 然而,这在ARC演讲中是合格的,因为只有4.3.x的目标获得了"兼容性胶水". (3认同)