ARC
ARC简介
- ARC是自iOS 5之后增加的新特性,是iOS程序猿的福音
- ARC的全称是Automatic Reference Counting(自动引用计数)
- ARC的实现细节
编译器会自动在适当的地方插入适当的retain、release、autorelease语句
也就是说,编译器会自动生成内存管理的代码,不用程序猿手动编写
- 如果是手动管理内存,可以简称MRC(Manual Reference Counting)
ARC的注意点和优点
- ARC的注意点
- ARC是编译器特性,而不是运行时特性
- ARC不是其他语言中的垃圾回收,有着本质区别
- ARC的优点
- 完全消除了手动管理内存的繁琐,让程序猿更加专注于app的业务
- 基本上能够避免内存泄露
- 有时还能更加快速,因为编译器还可以执行某些优化
ARC的判断原则
- 只要还有一个强指针变量指向对象,对象就会保持在内存中
强指针
- 默认所有指针变量都是指针
- 被_strong修饰的指针
弱指针
- 被_weak修饰的指针
ARC的使用细节
- 不能调用release、retain、autorelease、retainCount
- 可以重写dealloc,但是不能调用[super dealloc]
- ARC中的@property
- strong:用于OC对象,相当于MRC中的retain
- weak:用于OC对象,相当于MRC中的assign
- assign:用于基本数据类型,跟MRC中的assign一样
- copy:一般用于NSString,跟MRC中的copy一样
MRC转为ARC