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