我已经下载了iOS 5 SDK,发现ARC是新Apple编译器的一个很棒的功能。目前,许多第三方框架不支持ARC。我可以将ARC用于我的新代码并保持当前的保留/释放代码不变吗? ARC转换器在这里不起作用,因为某些框架(例如JSONKit)无法使用转换器转换为ARC。
编辑:
答案是将-fno-objc-arc
添加到您不希望ARC的文件的编译器标志中。在Xcode 4中,您可以在目标下执行此操作 - >构建阶段 - >编译来源。
答案 0 :(得分:77)
如何在 MULTIPLE 文件上禁用ARC并不是很直观,有一段时间我一个接一个地去做,直到找到了解决方法。
答案 1 :(得分:73)
The public ARC docs虽然在这一点上没有直接明确,但似乎暗示只要每个类都是ARC或全部是手动管理的,这些类就可以集成到一个程序中。
你只能在一个班级中混合使用ARC和非ARC;该文档说,禁止以任何方式发送retain
,release
,autorelease
或retainCount
消息(包括使用@selector
的定时器和延迟执行)在ARC代码中。因此,您不能在ARC类中执行非ARC(因为必要的消息被禁止),并且您不能在非ARC类中执行ARC(因为ARC添加的语法元素在没有ARC的情况下无效)。
对于是否可以将非ARC库/框架集成到ARC程序中,相同的文档更清楚:是的。它没有提到你是否可以在所有代码都是非ARC的程序中使用ARC库/框架,但鉴于上述所有内容,其含义似乎是肯定的。
答案 2 :(得分:35)
如果你想为某些文件禁用自动引用计数,那么按照步骤操作非常简单。你可以在目标中添加编译器标志 - >构建阶段 - >编译来源。
使用的标志是 -fno-objc-arc 写完后按Enter键。 您必须双击Compiler Flags下行的右列。 希望它有所帮助谢谢:)
答案 3 :(得分:2)
通过为这些文件添加-fno-objc-arc编译器标志,可以为单个文件禁用ARC。