OC ARC与MRC

来源:互联网 发布:linux 目录权限 最大 编辑:程序博客网 时间:2024/04/28 11:39

Objective-C提供了三种内存管理方式:

 

       1、MannulReferenceCounting(MRC,手动管理,在开发iOS4.1之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动retain、release、autorelease 等,而在其后的版本可以使用ARC,让系统自己管理内存。)

 

       2、automaticreference counting(ARC,自动引用计数,iOS4.1 之后推出的)

 

       3、garbagecollection(垃圾回收)。iOS不支持垃圾回收; ARC作为苹果新提供的技术,苹果推荐开发者使用ARC技术来管理内存;

 

内存管理的原理:

对象的引用计数器:

每个OC对象都有自己的引用计数器,是一个整数,表示对象被引用的次数。当对象一创建时,默认的计数器值为1

当对象的引用计数器的值为0时,则对象被销毁,这个对象所对应的内存将被释放


手动管理内存, 可以简称MRC (Manual ReferenceCounting)

 Automatic ReferenceCounting,自动引用计数,即ARC,可以说是WWDC2011和iOS5所引入的最大的变革和最激动人心的变化。ARC是新的LLVM3.0编译器的一项特性,使用ARC,可以说一举解决了广大iOS开发者所憎恨的手动内存管理的麻烦。

 

       在工程中使用ARC非常简单:只需要像往常那样编写代码,只不过永远不写retain,release和autorelease三个关键字就好~这是ARC的基本原则。

 

       当ARC开启时,编译器将自动在代码合适的地方插入retain,release和autorelease,而作为 开发者,完全不需要担心编译器会做错(除非开发者自己错用ARC了)。

      

ARC与其他语言的”垃圾回收”机制不同。ARC:编译器特性;“垃圾回收”运行时特性 

mrc,手动管理;如果mrc内存不释放就会出错,调用一次对象就要 调用[xx release]来释放对象,[xx release]要写在调用对象的后面,重写dealloc方法在控制台中可查看对象是否释放完毕。 也可以使用[xx autorelease] 来释放对象。

arc,自动引用计数管理;

开发中如何使用:开发中尽量使用arc。



0 0
原创粉丝点击