如何在一个开启了ARC的工程里使用不支持ARC的对象
2013-01-09 12:04
148 查看
悲剧的ASIHTTPRequest不支持ARC,我的新工程想把ARC开起来。
但是想不到办法,怎么在一个开启ARC的工程里使用不支持ARC的对象。。。
import进来,连编译都过不了啊!悲了个剧!
链接
显示评论 (1条)
得票数 时间先后
对于它的.m文件启用编译器flag:
![](http://segmentfault.com/img/bVGbT)
链接
添加评论
2赞踩
简易方案,选择你编译的的target,build phases-->Compiled sources中,双击没用arc的文件,写
相应的,没开启ARC的工程单独为某文件开启arc,compile flag填
如果你为别人写框架,需要兼容arc、非arc、gc等多模,在代码中可以用预处理判断:
也可以在你全局的pch中加入这个宏
以后判断就
链接
显示评论 (1条)
0赞踩
只要把不需要arc的类设置一下就好了 - - 参考这篇文章http://www.yifeiyang.net/development-...
链接
添加评论
0赞踩
可以借助静态方法操作。
首先这些非ARC的m文件要加上 -fno-objc-arc参数编译
然后还要有一个辅助的类也是-fno-objc-arc的。在这个类中初始化ASIHTTPRequest对象,并且实现delegate方法,注册delegate和应用回调方法。
辅助类中定义静态方法,来发起请求。当请求完成回调delegate的时候,在根据注册的delegate和应用回调,使用 [delegate performSelector:]的方式完成回调。
链接
1
junzhan · 2012年10月30日
为什么还要用个辅助类啊? @gaosboy 我测了一下在arc文件中alloc init非arc的ASIHTTPRequest, 设置userInfo,ASIHTTPRequest和userInfo对象都会进入dealloc的.
但是想不到办法,怎么在一个开启ARC的工程里使用不支持ARC的对象。。。
import进来,连编译都过不了啊!悲了个剧!
链接
加杰特3142012年09月27日提问 |
得票数 时间先后
4 个回答
2赞踩对于它的.m文件启用编译器flag:
-fno-objc-arc
链接
husher4212012年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.4k2012年10月23日回答 |
0赞踩
只要把不需要arc的类设置一下就好了 - - 参考这篇文章http://www.yifeiyang.net/development-...
链接
android_209462012年09月28日回答 |
0赞踩
可以借助静态方法操作。
首先这些非ARC的m文件要加上 -fno-objc-arc参数编译
然后还要有一个辅助的类也是-fno-objc-arc的。在这个类中初始化ASIHTTPRequest对象,并且实现delegate方法,注册delegate和应用回调方法。
辅助类中定义静态方法,来发起请求。当请求完成回调delegate的时候,在根据注册的delegate和应用回调,使用 [delegate performSelector:]的方式完成回调。
链接
Rontgen1672012年10月23日回答 |
junzhan · 2012年10月30日
为什么还要用个辅助类啊? @gaosboy 我测了一下在arc文件中alloc init非arc的ASIHTTPRequest, 设置userInfo,ASIHTTPRequest和userInfo对象都会进入dealloc的.
相关文章推荐
- 如何快速判断一个工程是否使用ARC
- 如何为工程添加一个Installshield不支持的语言--艾泽拉斯之海洋女神翻译
- iOS ARC模式下,如何获得一个对象的引用计数器个数
- 如何使用GDI+装载图片对象(支持png图片)
- 如何在一个Spring工程下使用多数据源配置的改进实现
- JAVA内存使用--如何计算一个Java对象占用的字节数
- unity3d 使用c#如何访问某个对象里的c#脚本里的一个变量
- 【Unity&对象数组】如何创建一个长度不确定的对象数组以及使用方法&墙壁单元方块对象数组
- JAVA内存使用--如何计算一个Java对象占用的字节数
- JAVA内存使用--如何计算一个Java对象占用的字节数
- XCode5中新建工程后强制使用了ARC,如何去掉?
- XCode5中新建工程后强制使用了ARC,如何去掉?
- ARC和MRC在同一个工程中的使用
- 如何使用MCUXpresso IDE创建一个Cortex-M工程
- 在使用Sql server 2005 生成脚本时,出现目标服务器版本不支持该对象或不支持该对象的一个属性。 (Microsoft.SqlServer.Smo)的解决办法
- 如何创建一个新对象?如何使用对象中的属性和方法?
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
- 如何使用最简单的方法将一个已经存在的工程中使用 cocaPodfile
- 关于如何将一个对象保存到本地文件之ObjectOutputStream、ObjectInputStream的使用小结。
- 在子线程中如何使用Handler将一个包含对象的集合传递给主线程