ARC全称为Automatic Reference Counting,是一种编译器特性。
在IOS5之前是没有ARC机制的,那时候内存管理全部要靠程序员自己来。有关内存管理的代码,简单却烦琐。而且还容易发生内存泄漏的错误。自从IOS5之后 编译器增加了自动在适当地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理一切的内存管理方面的问题。
那么ARC是通过什么原理来管理内存问题的呢?它有一个判断的准则:只要没有强指针指向对象,就会释放对象。在ARC机制下不允许调用release、retain、retainCount;允许重写dealloc,但不允许调用[super dealloc]。在@property中的应用是将retain改为strong其他不变就行了。那什么是强指针呢,默认情况下,所有指针都是强指针。有强指针就会有弱指针;而弱指针用到的情况不是很多,一般遇到循环引用问题时,在ARC机制下,需要将一端用strong一端用weak;非ARC机制下,一端用retain,一端用assign;
http://bbs.itheima.com/forum.php
时间: 2024-10-12 02:47:12