般都是开启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库的时候才会遇到,一般情况下不用太在意。
更加详细的描述可以参见这篇文章:http://longweekendmobile.com/2011/09/07/objc-automatic-reference-counting-in-xcode-explained/

转载于:https://www.cnblogs.com/jiangshiyong/archive/2012/06/12/2546397.html

设置部分文件不适用ARC机制相关推荐

  1. Xcode 中设置部分文件ARC支持

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

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

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

  3. 在ARC工程中制定部分文件不适用ARC编译的方法【转】

    原文地址:http://iostrack.com/post/2012-06-28/40027722656 ARC是编译器LLVM 3.0的新功能,而非iOS,因此ARC支持 Mac OS X v10. ...

  4. ios5 ARC机制介绍和使用

    参考http://www.yifeiyang.net/development-of-the-iphone-simply-1/ http://blog.csdn.net/diyagoanyhacker/ ...

  5. 自动释放池 ARC机制

    IOS学习第24天 @class 1.两个类A和B,如果互相#import对方头文件,会造成死循环2.解决方式: 在其中的一方,不要用#import <xxx.h>来引入对方的头文件,用@ ...

  6. Vim的行号、语法显示等设置(.vimrc文件的配置)以及乱码解决

    在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号.语法高亮度显示.智能缩进 等功能的.为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc. 在启动vim时,当前用 ...

  7. linux acl 权限 给任何用户或用户组设置任何文件/目录的访问权限

    ACL 是什么 ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表.它在UGO权限管理的基础上为文件系统提供一个额外的.更灵活的权限管理机制. ...

  8. @lass关键字 ARC机制

    OC加强day02 @class关键字 - 两个类A和B, 如果互相#import对方头文件,会造成死循环 - 解决方式 - 在其中的一方,不要用#import #import "B.h&q ...

  9. 设置服务器文件上传地址,设置服务器文件上传地址

    设置服务器文件上传地址 内容精选 换一换 您需要提前准备好符合条件的镜像文件,并了解操作系统的已知问题(参见已知问题).表1中,网络.工具.驱动相关的配置需要在虚拟机内部完成,强烈建议您在原平台的虚拟 ...

  10. Redis 中的 持久化 AOF持久化 打开AOF持久化功能 设置AOF文件的冲洗频率 AOF重写 AOF持久化的优缺点

    这里写目录标题 15.2 AOF持久化 15.2.1 打开AOF持久化功能 15.2.2 设置AOF文件的冲洗频率 15.2.3 AOF重写 1.BGREWRITEAOF命令 其他信息 2.AOF重写 ...

最新文章

  1. windows环境下安装elasticsearch
  2. 深度学习:tensorflow Layers的实现,numpy实现深度学习(二)
  3. 分布式数据库产品总结
  4. 容器源码分析之TreeSet(五)
  5. (5)css样式表特征
  6. JSON中的多行字符串
  7. 《算法竞赛进阶指南》0.1位运算
  8. 分享《通过开源项目去学习》
  9. 【零基础一起学习FPS游戏Unity3D手机游戏开发】第1章 准备工作
  10. 在Excel表格里面一点就出现“√”符号选项的方法
  11. java生成短网址_http 长网址、短网址(短网址生成API)
  12. Hive 核心原理(hive-3.1.2)(转载)
  13. 电脑屏幕亮度随背景颜色变化
  14. 互联网技术研发管理之绩效管理提升
  15. 阅读 git 最初版源码总结
  16. Photoshop CS2 视频教程-PS色彩范围(转)
  17. 全国快递物流查询-快递单号查询接口api
  18. DA14531_定频发射测试
  19. 中国天井钻机行业运行现状分析及发展前景预测报告2022-2028年
  20. 杭州中级工程师职称评审条件

热门文章

  1. pythonfilelist_Python 列表list使用介绍
  2. c语言常用代码-1:
  3. 统计图源代码_openlayers4 入门开发系列结合 echarts4 实现统计图(附源码下载)
  4. java 位与 取模_【Java基础】14、位与()操作与快速取模
  5. 一个五年Java程序员的从业总结,献给还在迷茫中的你
  6. Spring 使用注解注入 学习(四)
  7. Android定位地图导航——基于百度地图,实现自定义图标绘制并点击时弹出泡泡...
  8. 2、深入理解 Laravel Eloquent(二)——中间操作流(Builder)
  9. C#语言课程11月11日
  10. CSS中clear:both用法及事例