2011-09-19 123 views
50

我有一个iOS应用程序,我想转换为使用ARC。我只是使用迁移工具,但它在预览阶段一直出错。如何在Xcode 4.2中启用ARC项目范围

我知道我可以使用-fobjc-arc编译器指令上的文件,按文件的基础上,但我想启用整个项目ARC,然后使用-fno-objc-arc关闭个别类。

4.2中的新项目默认情况下可以使用ARC,所以必须有某个开关。

谁能帮我到项目转换为ARC

回答

65

“ARC可在Xcode 4.2,目前处于测试阶段,只有当 与锵(又名编译‘苹果LLVM编译器’),设定是 叫,很明显的是,“Objective-C中自动引用计数”。 打开它,和您去。

如果你对现有代码的工作,改变这个设置会产生 错误的数量巨大ARC不仅为您管理内存, 但它禁止你试图自己做。 在使用ARC时手动发送保留/释放/自动释放是非法的。由于正常的 非ARC可可代码充斥着这种东西,你会得到很多 错误。

幸运的是,Xcode提供了一个工具来转换现有的代码。 选择编辑 - >重构... - >转换到Objective-C ARC ...和Xcode将指导您转换您的代码。虽然可能存在需要帮助搞清楚该怎么做一些 情况下,过程 应该是高度自动化的”

我把此链接中,对我帮助很大: http://www.mikeash.com/pyblog/friday-qa-2011-09-30-automatic-reference-counting.html

+0

在我的结局中,不是“很大程度上是自动的”,我只花了大约一个小时或更多的时间来摆脱保留和自动释放,这个“转换为Objective-C ARC”有什么意义?它有什么作用? – PaulG

+0

你是否正确,你仍然需要手动删除保留和发布..林不知道,如果这是苹果的目标,迫使你看看你不再需要什么,或者如果它太容易错误的Xcode删除它们全部本身。 – RyanG

48

选择您的项目或目标,然后去构建设置和下段苹果LLVM编译器3.0 - 语言,你会看到选项的Objective-C自动引用计数

+0

“垃圾收集”的ARC下方的设置是否与ARC绑定? – raffian

+1

@SAFX,nope。 ARC和GC是两个完全不同的东西。 –

+1

在xcode 4.6中也是这样吗? – topwik

5

对于拖拽,在Xcode 4.6中,您需要查找“CLANG_ENABLE_OBJC_ARC”,然后将其更改为“Yes”以启用。