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

我下载了 iOS5SDK,发现 ARC 是新的苹果编译器的一个很棒的特性。目前,许多第三方框架不支持 ARC。我是否可以在新代码中使用 ARC 并保持当前的保留/发布代码不变?ARC 转换器在这里无法工作,因为某些框架(如 JSONKit)无法通过使用转换器将其转换为 ARC。

编辑:

答案是将 -fno-objc-arc添加到不需要 ARC 的文件的编译器标志中。在 Xcode 4中,可以在目标-> 构建阶段-> 编译源下执行此操作。

54213 次浏览

公开的 ARC 文档 虽然没有直接说明这一点,但似乎表明,只要每个类都是全部 ARC 或全部手动管理的,就可以将这些类集成到一个单独的程序中。

你只能在一个类中混合使用 ARC 和非 ARC; 文档说明在 ARC 代码中禁止通过任何方式(包括定时器和延迟执行,使用 @selector)发送 retainreleaseautoreleaseretainCount消息。因此,不能在 ARC 类中执行非 ARC (因为必要的消息被禁止) ,也不能在非 ARC 类中执行 ARC (因为 ARC 添加了没有 ARC 就无效的语法元素)。

关于是否可以将非 ARC 库/框架集成到 ARC 程序中,同样的文档更加清楚: 是的。它没有提到是否可以在所有代码都是非 ARC 的程序中使用 ARC 库/框架,但是考虑到以上所有情况,这意味着是的。

如果你想禁用一些文件的自动引用计数,那么它真的很简单,只要按照步骤。您可以在目标-> 构建阶段-> 编译源中添加编译器标志。

xcode

使用的标志是 - fno-objecc-Arc写入后按回车。 ! 您必须双击编译器标志下行的右列。 希望对你有帮助,谢谢

如何禁用 很多文件上的 ARC 并不是很直观,有一段时间我是一个接一个地做,直到弄清楚如何做到这一点。

  1. 在 Xcode 的目标/构建阶段/编译源选择所需的 文件(CMD + click 或 Shift + click)
  2. 按 ENTER (双击将重置选定内容,因此无法工作)
  3. 类型 - fno-objecc-Arc
  4. 按回车或完成

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

如何禁用 ARC 为一个单一的文件在一个项目?