我的项目使用ARC(自动引用计数器),所以当我尝试导入ASIHTTPRequest库时,它有4个在实现中使用的类自动释放语句,这是一个例子:
[self setAccessLock:[[[NSRecursiveLock alloc] init] autorelease]];
我得到的错误:
ARC forbids explicit message send of autorelease
我该怎么做才能解决这个问题。
答案 0 :(得分:14)
我有解决方案,我需要为每个不支持ARC的文件的编译器标志添加正确的标志。对我来说,我使用Xcode 4.2,因此在target -> Build Phases -> Compile Sources
下,双击要禁用ARC功能的文件,然后点击-fno-objc-arc
点击Done
。它完成了;)
请注意,如果列表中不存在该文件,您可以通过单击+按钮添加它,然后执行上述相同的工作。
答案 1 :(得分:9)
为该一个班级禁用ARC
将项目迁移到ARC时,会将-fobjc-arc编译器标志设置为所有Objective-C源文件的缺省值。您可以使用该类的-fno-objc-arc编译器标志为特定类禁用ARC。
在Xcode中,在目标Build Phases选项卡中,打开Compile Sources组以显示源文件列表。双击要为其设置标志的文件,在弹出式面板中输入-fno-objc-arc,然后单击“完成”。