OC内存管理 MRC与ARC

来源:互联网 发布:淘宝买了假酒怎么处理 编辑:程序博客网 时间:2024/05/03 03:19

一.MRC和ARC简介

1).MRC 手动内存管理 ,正如字面意思一样,在开发过程中,涉及内存的操作都学要手动保留和释放,对对象引用时需要对对象发送retain消息,引用计数加1   ;在不需要对象的时候,向对象发送release消息,引用计数减1。这些操作都是显式添加的。

2).Xcode4.2 之后,苹果引入自动内存管理的机制。OC的自动内存管理,不同于JAVA垃圾回收。 它是在预处理时,直接在对象应该保留的地方,添加retain;在对象应该释放的地方,添加release。是直接添加代码。


一句话:MRC是自己动手添加retain/release,ARC是编译器帮你添加。

注意:虽然ARC比较高效,毕竟是机器帮你添加的,如果代码不规范,使用ARC也是会出现内存泄露问题的。


二.MRC和ARC混编

关于为什么要混编,因为没有ARC的时候,都是使用MRC,之前的代码都是关于MRC的。在ARC环境下肯定会使用MRC的代码(比如,第三方库),这个时候就由两者共存的必要性了。下面说一下在一个工程中混编的实现过程:

第一步:选中工程

第二步:选择Targets->Build Phases->Compile Sources

第三步:找到使用MRC的文件,双击Compile Flags项,填上:-fno-object-arc

ok,混编完成


三.MRC转换成ARC

想将MRC下编写的程序转换成ARC机制下能够运行的程序,过程也是很简单的,苹果在Xcode中提供了方便转换的方法,基本一键完成。

注意:由MRC转换成ARC是单向的,也就是说,不能再由ARC转换成MRC;而且为了保证转换之后运行顺利,请确保代码规范。

转换方法:(此方法基于5.0版本,其他版本可能有出入,但基本类似)Edit->Refactor->convert to objectiv-c ARC...


以上属学习阶段的总结,有不足或者错误的地方,欢迎留言指出。


0 0
原创粉丝点击