ARC (Automatic Reference Counting) 自动引用计数
使用ARC,编译器会自动添加retain、release、对引用计数做加减。
ARC黄金法则:
1、如果没有一个指针指向对象,那么此对象从内存中销毁
2、只要还有一个指针指向对象,那么对象就保存在内存中
ARC也存在内存泄露!!!!!
ARC中的重写dealloc方法:
- (void) dealloc {
//[super dealloc]; ARC中不用调用
_dog = nil;//相当于MRR中的[_dog release];
}
ARC与MRR的区别:
1、ARC中,dealloc方法中不允许调用[super dealloc];
2、ARC中,不允许使用retaincount属性,打印引用计数;
3、ARC中,不允许使用retain、release、autorelease,copy可以使用;
4、ARC中,不能使用NSAutoreleasePool,需要使用@autoreleasepool{}
5、ARC不再允许结构体和枚举中声明OC的对象作为成员变量;
6、ARC在switch-case语句中定义指针变量,需要添加其作用域。
ARC、非ARC的使用标记:
project settings---> Build Phase
-fno - objc - arc 标记源代码文件使用MRR
-fobjc - arc 标记文件使用ARC(默认不写)