我已经下载了 iOS 5 SDK,发现 ARC 是 Apple 新编译器的一大特色。目前,许多第三方框架不支持 ARC。我可以将 ARC 用于我的新代码并保持当前的保留/发布代码不变吗?ARC转换器在这里不起作用,因为某些框架,例如JSONKit,无法使用转换器将其转换为ARC。
编辑:
答案是为-fno-objc-arc不需要 ARC 的文件添加编译器标志。在 Xcode 4 中,您可以在 target -> Build Phases -> Compile Sources 下执行此操作。
-fno-objc-arc
公开的 ARC 文档虽然没有直接明确这一点,但似乎暗示只要每个类都是 ARC 或全部是手动管理的,这些类就可以集成到一个程序中。
您不能在一个班级中混合使用 ARC 和非 ARC;该文件说,ARC 代码禁止通过任何方式(包括计时器和延迟执行,使用)发送retain、release、autorelease或消息。因此,您不能在 ARC 类中执行非 ARC(因为必要的消息被禁止),并且您不能在非 ARC 类中执行 ARC(因为 ARC 添加了没有 ARC 无效的语法元素)。retainCount``@selector
retain
release
autorelease
retainCount``@selector
关于是否可以将非 ARC 库/框架集成到 ARC 程序中,同一份文档更加清晰:是的。它没有提到您是否可以在所有代码都是非 ARC 的程序中使用 ARC 库/框架,但鉴于上述所有情况,暗示似乎是肯定的。