笔者开始自学iOS的时候是MRC的,不久便接触了ARC。
下面介绍一下我所理解的MRC和ARC:
ARC和MRC的区别:
MRC:(Manual Reference Counting)也就是非ARC,在Xcode4之前,Object_C的内存管理就需要开发人员手动维护。
ARC:(Automatic Reference Counting)也就是ARC,翻译成中文就是:【自动引用计数】,不需要开发人员手动维护,系统会在合适的时候调用内存管理方法。
如果你是其它平台的开发者,也许你会问,苹果为啥出了这么一个东西?到底怎么用?
- 这个问题问得好。我们的其它开发平台例如:C#、Java等都是通过垃圾回收机制的。在WWDC2011 大会上,苹果 MacOS 上的垃圾回收机制废弃 (Deprecated),采用 ARC 替代,意味着,ARC是苹果推荐的。为啥这么说?MRC时代,我们程序员要时刻记得对象的释放“release”,开发效率低!在MRC时代,我们要想保持一个对象,只要“retain”。现在的ARC是不需要了,现在只需用一个指针指向这个对象,无非2种情况:第一:指针为空时,对象被释放咯。第二:指针不为空,对象会一直保存在堆里,如果当指针指向一个新的值时,原来的对象会被release一次,这个系统会在合适的时候自动帮我们搞掂,不需我们关心。
问题:在ARC下,对象怎么释放?
- 只要对象指针被置空,就会释放。否则,对象就会一直保持在堆上。当将指针指向新值时,原来的对象会被release 一次。