ARC和MRC

笔者开始自学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 一次。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容