OC的ARC机制


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。


原文地址:https://www.cnblogs.com/coderkl/p/4320320.html