ARC 是编译器特性
看到 @property (retain), 自动在 dealloc 里面添加相关属性的 release ,
看到 你在main 方法里面调用 alloc ,就在后面自动给你添加 release
注意不是垃圾回收,垃圾回收是运行时特性
ARC 的判断准则,只要没有强指针指向对象,就会释放对象
指针分两种:
默认情况下都是强指针 __strong
用两个下划线 __weak 声明的是弱指针
和 非 ARC 的区别
1、 非 ARC @property 用 retain , 并且在 dealloc 里面写 release
ARC 用 Strong ,并且不用 release
ARC 的特点
1>不允许调用 release retain retainCount
2>允许重写 dealloc 但不允许调用 [super dealloc]
3>@property 的参数
* Strong 相当于原来的 retian
* weak 相当于原来的 assign
* assign 使用于 非 OC 对象