禁用某些文件的自动引用计数

我已经下载了iOS 5 SDK,发现ARC是新的Apple编译器的一个很棒的function。 目前,许多第三方框架不支持ARC。 我可以使用ARC作为我的新代码,并保持当前的保留/释放代码不变吗? ARC转换器在这里不起作用,因为一些框架,比如JSONKit,不能通过转换器转换成ARC。

编辑:

答案是将-fno-objc-arc添加到不想要ARC的文件的编译器标志。 在Xcode 4中,您可以在您的目标 – > Build Phases – > Compile Sources下执行此操作。

公共ARC文档虽然没有直接明确,但似乎表明,只要每个类都是ARC或全部手动pipe理,这些类可以集成到一个程序中。

你不能在一个类中混合使用ARC和非ARC。 该文件说在ARC代码中禁止以任何方式发送retainreleaseautoreleaseretainCount消息(包括使用@selector定时器和延迟执行)。 所以你不能在ARC类中做非ARC(因为必要的消息被禁止),你不能在非ARC类中做ARC(因为ARC添加了无ARC的无效语法元素)。

关于是否可以将非ARC库/框架集成到ARC程序中,相同的文档更清晰一点:是的。 它并没有提到你是否可以在所有代码都是非ARC的程序中使用ARC库/框架,但是考虑到上述所有情况,其含义似乎是肯定的。

如何在MULTIPLE文件上禁用ARC并不是非常直观的,有一段时间我一个接一个地做,直到找出如何做到这一点。

  1. 在Xcode中select目标/构build阶段/编译源文件中的所需文件(CMD +单击或Shift +单击)
  2. 按下ENTER (双击将重置select,所以它不起作用)
  3. 键入-fno-objc-arc
  4. 按input或完成

如果您想要禁用某些文件的自动引用计数,那么只需按照以下步骤操作即可。您可以在目标 – >编译阶段 – >编译源中添加编译器标志。

Xcode中

使用的标志是-fno-objc-arc ,写入后按回车。 您必须双击Compiler Flags下的右列。 希望它有帮助谢谢:)

可以通过为这些文件添加-fno-objc-arc编译器标志来禁用单个文件的ARC。

如何禁用项目中单个文件的ARC?

要禁用单个类的ARC,在Xcode中单击项目并展开编译源部分之后,需要转到“构build阶段”。

在右侧,您将看到为特定类添加编译器标志的选项。 为该类设置-fno-objc-arc将会禁用ARC。

源: 使用-fno-objc-arc禁用自动引用计数