设置部分文件不适用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 ARC项目使用MRC(非ARC)文件 MRC项目使用ARC文件

苹果在iOS4.0后引入了ARC,这就带给我们一些新的问题,我们会发现有很多项目会混合使用这两个方案。例如: 1.自己的旧项目使用了MRC,但是引入的第三方库却是使用了ARC的。 2.自己的新项目使...
  • u010954104
  • u010954104
  • 2014年12月04日 17:19
  • 503

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

http://blog.sina.com.cn/s/blog_71715bf80101a9q6.html ARC是什么        ARC是iOS 5推出的新功能,全称叫 ARC(A...
  • jeffasd
  • jeffasd
  • 2015年11月26日 18:06
  • 877

ARC指南2 - ARC的开启和禁止

要想将非ARC的代码转换为ARC的代码,大概有2种方式: 1.使用Xcode的自动转换工具 2.手动设置某些文件支持ARC 一、Xcode的自动转换工具 Xcode带了一个自动转换...
  • q199109106q
  • q199109106q
  • 2013年02月02日 16:47
  • 22870

IOS ARC 和 非ARC 之间的转换方法

1,选择项目中的Targets,选中你所要操作的Target, 2,选Build Phases,在其中Complie Sources中选择需要ARC的文件双击, 并在输入框中输入:-fobj...
  • zhibudefeng
  • zhibudefeng
  • 2013年01月04日 09:49
  • 31872

ios 类文件中 ARC与非ARC的设置

用-fno-objc-arc标记来禁用在ARC工程那些不支持ARC的文件的ARC 用-fobjc-arc标记启用非ARC工程中支持ARC的文件   这样就可以混合使用了...
  • sqc3375177
  • sqc3375177
  • 2013年06月24日 10:14
  • 7880

iOS中arc的设置与使用

旧工程配置arc方案: 1,直接在targets->build phases中修改compiler Flags,是否支持arc。添加:-fobjc-arc,就可以让旧项目支持arc。如果想让原来...
  • xcysuccess3
  • xcysuccess3
  • 2014年02月08日 11:28
  • 1327

[ios] iOS中arc的设置与使用

旧工程配置arc方案: 1,直接在targets->build phases中修改compiler Flags,是否支持arc。添加:-fobjc-arc,就可以让旧项目支持arc。如果想让原来支持...
  • jinjiantong
  • jinjiantong
  • 2014年01月24日 08:33
  • 358

设置部分文件不适用ARC机制

般都是开启arc功能,毕竟不需要自己手动去释放,是一件比较轻松的事情。  但是我们在引用第三方的时候,基本上都是带release与retain的方法,这个时候代码编译就通不过  可以设置部...
  • itpeng523
  • itpeng523
  • 2014年06月18日 11:02
  • 714

Xcode 中设置部分文件ARC支持或者设置部分文件不支持ARC

@在XCode中经常需要导入一些外来的代码文件,如果导入的文件使用了ARC机制而你的当前项目没有使用ARC,那么xCode会给出警告,或者报错。...
  • humingtao2013
  • humingtao2013
  • 2014年04月18日 17:42
  • 6638

iOS中arc的设置与使用

旧工程配置arc方案:   1、直接在targets->build phases中修改compiler Flags,是否支持arc。添加:-fobjc-arc,就可以让旧项目支持arc。如...
  • qq_33391441
  • qq_33391441
  • 2016年02月26日 09:52
  • 185
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设置部分文件不适用ARC机制 - iOS开发
举报原因:
原因补充:

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