xcode中使用ARC问题

解决方案一:

那么在xCode中经常需要导入一些外来的代码文件,如果导入的文件使用了ARC机制而你的当前项目没有使用ARC,那么xCode会给出警告,或者报错。我们该如何处理这些问题呢:

点击项目导航文件--> 选中Targets--> 选择 Build Phases --> 展开Compile Sources

这个时候,我们看到第二列的名称为:Compiler Flags

双击你所要使用ARC的文件,并输入 -fobjc-arc

那么现在这个文件就可以在编译时使用ARC机制进行编译了。

同上,如果想让使用ARC机制的代码不使用ARC机制,只需要输入 -fno-objc-arc  

 

 

解决方案二:

就是我们在工程中会有很多的共通的lib包要导入,但是有些工程是支持ARC,有些工程是不支持ARC的,这个时候就需要分别对应了,昨天和一个日本人讨论一番,在iOS4.3中用ARC,支持是支持不过好像有问题,我举反对他举赞成,最后找了个网上的资料,否决了,今天无意中看一段github上的code,发现原来是可控的。

上一段代码先

#if !__has_feature(objc_arc)

    [request autorelease];

#endif

看代码大概能猜出个12345,不过还是上网找了资料,结果就找到了一个github中ARC Helper的开源代码(现在意见习惯性的搜索github找解决方案了)

说实话每次都按照上面的代码写得话不是一般得烦,有了这个ARC Helper宏(参照:iOS开发中使用宏定义提高开发效率),写起来便利多了。

贴下代码,具体也可参照github的ARC HELPER

// // ARC Helper // // Version 1.2.2 // // Created by Nick Lockwood on 05/01/2012. // Copyright 2012 Charcoal Design // // Distributed under the permissive zlib license // Get the latest version from here: // // https://gist.github.com/1563325 // #ifndef AH_RETAIN #if __has_feature(objc_arc) #define AH_RETAIN(x) (x) #define AH_RELEASE(x) (void)(x) #define AH_AUTORELEASE(x) (x) #define AH_SUPER_DEALLOC (void)(0) #else #define __AH_WEAK #define AH_WEAK assign #define AH_RETAIN(x) [(x) retain] #define AH_RELEASE(x) [(x) release] #define AH_AUTORELEASE(x) [(x) autorelease] #define AH_SUPER_DEALLOC [super dealloc] #endif #endif // Weak reference support #ifndef AH_WEAK #if defined __IPHONE_OS_VERSION_MIN_REQUIRED #if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_4_3 #define __AH_WEAK __weak #define AH_WEAK weak #else #define __AH_WEAK __unsafe_unretained #define AH_WEAK unsafe_unretained #endif #elif defined __MAC_OS_X_VERSION_MIN_REQUIRED #if __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_6 #define __AH_WEAK __weak #define AH_WEAK weak #else #define __AH_WEAK __unsafe_unretained #define AH_WEAK unsafe_unretained #endif #endif #endif // ARC Helper ends  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值