ARC:Automatic Reference Counting(自动引用计数)
ARC的实现细节
➢ 编译器会自动在适当的地方插入适当的retain、release、autorelease语句
➢ 编译器会自动在适当的地方插入适当的retain、release、autorelease语句
➢ 也就是说, 编译器会自动生成内存管理的代码, 不用程序猿手动编写
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: Xcode: Edit->Refactor->Conver to Objective-C ARC...