ARC
1、ARC机制
2、ARC 判断准则
3、注意事项
4、ARC和非ARC混合使用
ARC机制
ARC 是编译器特性,而不是 iOS 运行时特性,它也不是类似于其它语言中的垃圾收集器。因此 ARC 和手动内存管理性能是一样的,有时还能更加快速,因为编译器还可以执行某些优化
ARC 判断准则:
只要没有强指针,就会释放对象。
指针分2种:
强指针:默认都是强指针 (__strong)
__strong Person *p; // __strong 可以不写,默认就是__strong
弱指针:使用(__weak)声明的对象
__weak Person *p;
注意事项
1、 ARC不允许调用retain、release、retainCount
2、允许写dealloc,但是不允许调用 [super dealloc];
3、@property
strong 强指针(OC对象)
weak 弱指针(OC对象)
assign (非OC对象类型)
以前的retain改为strong,其他一切不变。
4、循环引用时,一端使用strong,一端使用weak,对应非arc下得retain和assgin
ARC和非ARC混合使用
如果整个项目就是ARC,如果想让某些文件不支持ARC,设置如下
首先看一下arc机制是否打开
然后再设置编译参数
如果整个项目不是ARC,但是想让某些文件支持ARC机制,设置如下 -f-objc-arc