ARC(Automatic Reference Count)自动引用计数

来源:互联网 发布:逆袭网络剧第二季 编辑:程序博客网 时间:2024/06/05 14:19

要理解ARC,必须知道apple的内存管理机制。apple使用RC来进行内存管理,当某个对象的RC为0时(没有拥有者),系统释放对象所占内存。在ARC推出之前,必须使用Manual Reference Count来进行管理,当属性特性为copy,retain,alloc时,RC加1,使用release时,RC减1.

当RC为0时,系统释放对象所占的内存,这时,会调用dealloc函数,如果被释放的对象同时也是其他对象的拥有者,那么还应该对所拥有的对象进行release,使其RC减1,如果达到0的话,同样会被系统释放内存。这里的问题在于,如果忘记对拥有的对象进行release,那么就会变成一个没有被引用的对象,从而造成内存泄漏。这在很多时候给开发者造成很大的麻烦。

后来出现了Clang static analyzer,它可以帮助分析代码,并报告错误,包括内存泄漏和过早释放。Apple加入了这个功能,用来为代码自动插入retain和release, 并最终诞生ARC,从而使开发者从MRC中解放出来。

参考:《iOS编程 第4版》

0 0