什么是ARC
Automatic Reference Counting,自动引用计数,简称ARC
顾名思义,系统自动的帮助我们去计算对象的引用计数器的值
在ARC机制下,我们不再需要手动调用retain、release、autorelease方法,编译器会自动的在合适的地方插入retain、release、autorelease代码
编译器会自动为对象做引用计数,而作为开发者,完全不需要担心编译器会出错
ARC机制下,对象何时会被释放
本质:对象的引用计数器值为0的时候,自动释放
表象:只要没有强指针指向这个对象,这个对象就会立即回收
强指针与弱指针
强指针:默认情况下,我们声明1个指针,这个指针就是1个强指针
我们也可以使用__strong(注意是两个下划线)来显示的声明这是1个强指针
Person *p1;这是1个强指针,指针默认情况下都是强指针
__strong Person *p2;这是1个显示声明的强指针
弱指针:使用__weak标识的指针就叫做弱指针
无论是强指针还是弱指针,都是指针,都可以用来存储地址,这1点没有任何区别
都可以通过这个指针访问对象的成员
唯一的区别就是在ARC机制下,它们用来作为回收对象的基准
如果1个对象没有任何强指针指向这个对象的时候,对象就会自动释放
确认程序是否开启ARC机制
(1)默认情况下,Xcode开启ARC机制,你也可以检查一下
(2)ARC机制下,不允许调用retain、release、retainCount、autorelease方法
(3)在dealloc中,不允许[super dealloc]
演示ARC下的单个对象的内存管理
(1)当指向对象的所有