如何解决禁用某些文件的自动引用计数?

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

您不能在一个班级中混合使用 ARC 和非 ARC;该文件说,ARC
代码禁止通过任何方式(包括计时器和延迟执行,使用)发送retainreleaseautorelease或消息。因此,您不能在 ARC
类中执行非 ARC(因为必要的消息被禁止),并且您不能在非 ARC 类中执行 ARC(因为 ARC 添加了没有 ARC
无效的语法元素)。retainCount``@selector

关于是否可以将非 ARC 库/框架集成到 ARC 程序中,同一份文档更加清晰:是的。它没有提到您是否可以在所有代码都是非 ARC 的程序中使用 ARC
库/框架,但鉴于上述所有情况,暗示似乎是肯定的。

解决方法

我已经下载了 iOS 5 SDK,发现 ARC 是 Apple 新编译器的一大特色。目前,许多第三方框架不支持 ARC。我可以将 ARC
用于我的新代码并保持当前的保留/发布代码不变吗?ARC转换器在这里不起作用,因为某些框架,例如JSONKit,无法使用转换器将其转换为ARC。

编辑:

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