ARC 简短介绍

ARC

ARC 是一种编译器特性!而不是IOS运行时特性,和JAVA中得垃圾回收机制完全不一样

ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切

ARC规则:只要还有一个强指针变量指向对象,对象就会保持在内存中

弱指针指向的对象被回收后,弱指针会自动变为nil指针,不会引发野指针错误

使用注意:

1、不允许调用release、retain、retainCount;

2、允许重写dello方法,但是重写dello方法中不允许[super delloc];

3、@property参数:

strong :代表创建的 _成员变量 是一个强指针,类似于原来的retain,(适用于OC对象)

weak   :代表创建的 _成员变量 是一个若指针,类似于原来的assgin,(适用于OC对象)

assign :这个适用于非OC对象,比如 int型、long型等等

4、以前的retain要改为strong

5、假如出现循环引用的用法,那么就要一端用strong一端用weak

例如:一条狗有一个主人,一个主人有一条狗!

@interface Dog : NSObject
@property (nonatomic,weak) Person *person; // 狗拥有一个主人对象,这个指针是一个弱指针,
@end

@implementation Dog
@end

@interface Person : NSObject
@property (nonatomic,strong) Dog *dog;    // 人拥有一个狗对象,这个指针是一个强指针,
@end

@implementation Person
@end


你可能感兴趣的:(ARC 简短介绍)