《Objective-c》-(内存管理之五:ARC-自动引用计数)
内存管理之五《ARC-Automatic Reference Counting》
1.ARC概念
-
ARC是Automatic Reference Counting---自动引用计数。
-
ARC是一种编译器特性,并不是java中得垃圾回收,java中的垃圾回收是运行时特性;
-
ARC的判断准则:只要没有强指针指向对象,就会释放对象;
2.ARC的特点
-
不允许调用release、retain、retainCount;
-
允许重写dealloc方法,但是重写时不用再调用父类的dealloc方法 即 [super dealloc];
-
@property的参数;
-
strong :成员变量是强指针,set方法会自动对计数器+1,如果没有了强指针指向某个对象就自动回收该对象(适用于OC对象类型);
-
-
-
weak : 成员变量是弱指针(适用于OC对象类型);
-
-
-
assign :适用于非OC对象类型;
-
-
以前的retain参数改用strong;
-
强指针:默认情况下,所有的指针都是强指针 __strong修饰;
-
弱指针:__weak 修饰;
3.循环引用的解决对策
-
非ARC中:
-
在两个类的.h文件中用@class XXX;
-
在两个类的.m文件中用#import “XXX”;
-
@property中一端用retain,另一端用assign;
-
ARC中:
-
在两个类的.h文件中用@class XXX;
-
在两个类的.m文件中用#import “XXX”;
-
@property中一端用strong,另一端用weak;