您的位置:首页 > 其它

如何在一个开启了ARC的工程里使用不支持ARC的对象

2013-01-09 12:04 148 查看
悲剧的ASIHTTPRequest不支持ARC,我的新工程想把ARC开起来。

但是想不到办法,怎么在一个开启ARC的工程里使用不支持ARC的对象。。。

import进来,连编译都过不了啊!悲了个剧!

链接


加杰特314

2012年09月27日提问
显示评论 (1条)

得票数 时间先后

4 个回答

2

对于它的.m文件启用编译器flag:
-fno-objc-arc





链接


husher421

2012年09月29日回答
添加评论

2

简易方案,选择你编译的的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


链接
4天前更新

OpenFibers2.4k

2012年10月23日回答
显示评论 (1条)

0

只要把不需要arc的类设置一下就好了 - - 参考这篇文章http://www.yifeiyang.net/development-...

链接


android_20946

2012年09月28日回答
添加评论

0

可以借助静态方法操作。

首先这些非ARC的m文件要加上 -fno-objc-arc参数编译

然后还要有一个辅助的类也是-fno-objc-arc的。在这个类中初始化ASIHTTPRequest对象,并且实现delegate方法,注册delegate和应用回调方法。

辅助类中定义静态方法,来发起请求。当请求完成回调delegate的时候,在根据注册的delegate和应用回调,使用 [delegate performSelector:]的方式完成回调。

链接


Rontgen167

2012年10月23日回答
1

junzhan · 2012年10月30日
为什么还要用个辅助类啊? @gaosboy 我测了一下在arc文件中alloc init非arc的ASIHTTPRequest, 设置userInfo,ASIHTTPRequest和userInfo对象都会进入dealloc的.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐