我已经下载了iOS 5 SDK,发现ARC是新Apple编译器的一大特性。目前,许多第三方框架不支持ARC。我是否可以将ARC用于新代码并保持当前的保留/发布代码不变? ARC转换器在此不起作用,因为某些框架(如JSONKit)无法通过转换器转换为ARC。为某些文件禁用自动引用计数
编辑:
答案是添加-fno-objc-arc
到编译器标志你不想ARC的文件。在Xcode 4中,您可以在您的目标 - > Build Phases - > Compile Sources下执行此操作。
我已经下载了iOS 5 SDK,发现ARC是新Apple编译器的一大特性。目前,许多第三方框架不支持ARC。我是否可以将ARC用于新代码并保持当前的保留/发布代码不变? ARC转换器在此不起作用,因为某些框架(如JSONKit)无法通过转换器转换为ARC。为某些文件禁用自动引用计数
编辑:
答案是添加-fno-objc-arc
到编译器标志你不想ARC的文件。在Xcode 4中,您可以在您的目标 - > Build Phases - > Compile Sources下执行此操作。
The public ARC docs虽然没有直接清楚这一点,但似乎表明,只要每个类都是ARC或全部手动管理,这些类可以集成到一个程序中。
你只能在一个类中混合使用ARC和非ARC;该文件说,通过任何方式(包括定时器和延迟执行,使用@selector
)在ARC代码中禁止发送retain
,release
,autorelease
或retainCount
消息。所以你不能在ARC类中做非ARC(因为必须的消息被禁止),你不能在非ARC类中做ARC(因为ARC添加了无ARC的无效语法元素)。
关于是否可以将非ARC库/框架集成到ARC程序中,相同的文档更清晰一点:是的。它没有提到你是否可以在所有代码都是非ARC的程序中使用ARC库/框架,但考虑到上述所有情况,其含义似乎是肯定的。
谢谢!我已经想出了如何为现有的非ARC类禁用ARC。 – nonamelive
你能跟我们分享你在做什么吗? –
@David H:如果你打算向提问者说明这一点,你应该注意提问者将他们的解决方案编辑成问题。 –
如果您想要禁用某些文件的自动引用计数,那么只需执行以下步骤即可轻松完成自动引用计数。您可以在目标 - >构建阶段 - >编译源中添加编译器标志。
使用的标志是-fno-objc弧写作之后按回车! 您必须双击Compiler Flags下的右列。 希望它能帮助谢谢:)
这是不是很直观如何在多禁用ARC文件,有一阵子我做一个接一个,直到想出如何做到这一点。
这不是真正的答案,而是一个血腥的小提示!投票+1 –
你是对的,这不是,但我总是只是搜索开关,这是答案之一。我认为现在大多数人已经知道答案,但不是这个“提示” – Tibidabo
是PO可以通过为这些文件添加-fno-objc-arc编译器标志来禁用单个文件的ARC。
要为个人类,你需要去点击Xcode中的项目后,建设阶段和扩大编译源代码部分禁用ARC。
在右侧,您会看到为特定类添加编译器标志的选项。为该类设置-fno-objc-arc将禁用ARC。
为了澄清,你只需将其添加到'.m'文件。不是'.h'文件。 – ma11hew28
[ARC在LLVM网站上公开记录](http://clang.llvm.org/docs/AutomaticReferenceCounting.html) –
我发现了这个对话: https://github.com/gowalla/AFNetworking/issues/ 36也许它可以帮助某人如何在iOS5 ARC支持的项目中集成JSONKit ;-)但是我现在还没有尝试过...... – 2011-10-17 06:48:16