1. ARC是编译器特性,而不是 iOS 运行时特性,它也不是类似于其它语言中的垃圾收集器。
因此 ARC 和手动内存管理性能是一样的,有时还能更加快速,因为编译器还可以执行某些优化。
2. 指针分2种:
强指针:默认情况下,所有的指针都是强指针 __strong
弱指针:__weak
3. ARC的判断准则:只要没有强指针指向对象,就会释放对象。
4. ARC特点
1) 不允许调用release、retain、retainCount
2) 允许重写dealloc,但是不允许调用[super dealloc]
3) @property的参数
* strong :成员变量是强指针(适用于OC对象类型)
* weak :成员变量是弱指针(适用于OC对象类型)
* assign : 适用于非OC对象类型
4) 以前的retain改为用strong
5. ARC与非ARC代码混用方法
项目—Build Phases—Compile Sources—Compiler Flags
-fno-objc-arc //不支持ARC
-f-objc-arc //支持ARC
6. ARC循环引用
两端互相引用时,一端用strong、一端用weak。