悲剧的ASIHTTPRequest不支持ARC,我的新工程想把ARC开起来。
但是想不到办法,怎么在一个开启ARC的工程里使用不支持ARC的对象。。。
import进来,连编译都过不了啊!悲了个剧!
悲剧的ASIHTTPRequest不支持ARC,我的新工程想把ARC开起来。
但是想不到办法,怎么在一个开启ARC的工程里使用不支持ARC的对象。。。
import进来,连编译都过不了啊!悲了个剧!
简易方案,选择你编译的的target,build phases-->Compiled sources中,双击没用arc的文件,写-fno-objc-arc
相应的,没开启ARC的工程单独为某文件开启arc,compile flag填 -fobjc-arc
如果你为别人写框架,需要兼容arc、非arc、gc等多模,在代码中可以用预处理判断:
#if(!__has_feature(objc_arc)) [_someObj release]; #endif
也可以在你全局的pch中加入这个宏
#ifndef OBJC_ARC_ENABLED #ifdef __has_feature #define OBJC_ARC_ENABLED __has_feature(objc_arc) #else #define OBJC_ARC_ENABLED 0 #endif #endif
以后判断就
#if(OBJC_ARC_ENABLED) [_someObj release]; #endif
可以借助静态方法操作。
首先这些非ARC的m文件要加上 -fno-objc-arc参数编译
然后还要有一个辅助的类也是-fno-objc-arc的。在这个类中初始化ASIHTTPRequest对象,并且实现delegate方法,注册delegate和应用回调方法。
辅助类中定义静态方法,来发起请求。当请求完成回调delegate的时候,在根据注册的delegate和应用回调,使用 [delegate performSelector:]的方式完成回调。
2 回答1.1k 阅读
1 回答1.2k 阅读✓ 已解决
1 回答2.8k 阅读
1 回答1.4k 阅读
1.7k 阅读
1 回答950 阅读
1 回答791 阅读
对于它的.m文件启用编译器flag: