Objective-C内存管理机制分成两种:MRC和ARC
(1)MRC (Manual Reference Counting)
- 当前系统默认都是采用ARC,如果想使用MRC需要在build settings里把Objective-C Automatic Reference Counting设置成No。
- 通过类对象的retainCount属性可以查询该类的引用计数
- 通过类对象的retain方法可以将引用计数加一
- 通过类对象的release方法可以将引用计数减一
- 当引用计数为0时,系统自动调用dealloc析构函数,不要在代码里显式调用
- autorelease和@autoreleasepool配合使用,当对象超出@autoreleasepool范围的时候,引用计数会被减一。
@autoreleasepool{
//如果加上[A retain] 就不会被释放
//[A retain]
A* a = [ [ [A alloc] init] autorelease];
}
(2)ARC(Automatic Reference Counting)
- 在ARC模式下,autorelease,retain,release,retainCount
- 在ARC模式下,在delloc函数中不能写[super delloc]
- ARC由编译器添加retain和release