设置部分文件不适用ARC机制 - iOS开发

转载 2015年11月19日 13:27:47
般都是开启arc功能,毕竟不需要自己手动去释放,是一件比较轻松的事情。

但是我们在引用第三方的时候,基本上都是带release与retain的方法,这个时候代码编译就通不过

可以设置部分文件不使用arc,这样就可以兼容了。

步骤:
加入第三方库时候选择



1. 单击项目,在builde phases 中,compile sources   
  
2.选中文件,双击文件,在弹出框中输入-fno-objc-arc,

3.编译就可以通过了。
  
注:
虽然使用ARC的好处多多,但在选择之前也需要考虑清楚,目前ARC只支持iOS5.0以上系统,在4.0上还不能支持weak reference,而对于解决strong reference cycle问题来说,弱引用是必须的。另外一些第三方库还并不能完美支持ARC,当然这也可以通过为特定文件指定-fno-obj-arc的方法来解决。

    ARC的使用很简单,去掉所有的retain/release/dealloc/autorelease方法,把原来property声明里的retain改为strong,assign改为weak,再把NSAutoReleasePool替换为@autoreleasepool即可满足绝大多数情况。


    另外还有一些需要注意的,包括属性名不能以new打头,不能显式调用dealloc但是可以实现自定义的dealloc方法,但是不要在方法中销毁内部变量,只需要翻译资源,同时也不需要调用[super dealloc],ARC为帮助完成这些操作。


    还有一些__strong、__weak、__unsafe_unretained、__autorelease标识符在绝大多数情况下都不会使用到,默认的__strong标识符即可以,而且也不需要显式的指明。


    需要注意的是,临时变量使用__weak标签的时候一定要小心,如果方法返回的是autorelease类型,将其赋值给__weak变量的时候,因为此时已经没有了强引用,该变量已不再存在,所以__weak变量获取到的值会是nil。


    类似的,如果方法返回的是__autorelease类型的对象指针,将其赋值给__strong变量,虽然运行结果是正确的,但是其内部行为并不如所期望的那样,会生成一个临时变量,具体说明可以参见apple官方文档。


    关于在C结构体中使用对象指针的问题,官方建议使用class代替,当然也可以将该文件指定为不使用ARC。


    最后,Toll Free Bridging只有在使用Core Foundtion库的时候才会遇到,一般情况下不用太在意。

相关文章推荐

IOS开发之----Xcode非ARC项目中设置部分文件ARC支持

ARC是什么       ARC是iOS 5推出的新功能,全称叫 ARC(Automatic ReferenceCounting)。简单地说,就是代码中自动加入了retain/release,原...

iOS开发自动释放池@autoreleasepool的使用注意事项以及ARC机制——面试必考内容

转载自:http://blog.csdn.net/weisubao/article/details/39961073 自动释放池@autorelease面试频率可能会吧release还要高。 ...

IOS开发系列——UIView专题之四:事件分发机制篇【整理,部分原创】

4事件分发机制 iOS中的事件大概分为三种,分别是Milti-Touch Events, Motion Events和Remote Control Events(events for contro...

iGUI插件 ios开发适用

  • 2012-10-10 15:00
  • 3.70MB
  • 下载

iOS开发笔记(适用小白)

  • 2014-06-15 13:05
  • 794KB
  • 下载

iOS开发笔记--iOS 跳转到系统的设置界面【适用iOS7.1、8.3、9.1】

在项目中,我们经常会碰到使用位置的需求。当用户设置app不允许使用位置的时候,最好的用户体验就是直接调转到系统的位置设置界面,进行设置。本人已经测试,在5c/6 iOS8.3系统 、6 iOS9.1系...

iOS开发-Objective-C单例在ARC环境下的实现和理解

objective-c语言arc环境下的单例到底应该怎么实现呢?为什么呢?如何保证使用alloc,init,new,copy,mutableCopy等方法实例化出来的对象,依然是那个单例对象呢?
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)