MRC 和 ARC的区别

iOS 知识点

1.MRC 和 ARC

Objective-c中提供了两种内存管理机制
MRC(Manual Reference Counting):手动内存管理
ARC(Automatic Reference Counting):自动内存管理

注意的是Xcode 4.1及其以前版本没有ARC,MRC与ARC的区别如图1所示。需要理解MRC,但实际使用时强推ARC。

MRC 和 ARC的区别_第1张图片

1. Objective-c语言中的MRC(Manual Reference Counting)

在MRC的内存管理模式下,与对变量的管理相关的方法有:retain,release和autorelease。
retain和release方法操作的是引用记数,当引用记数为零时,便自动释放内存。并且可以用NSAutoreleasePool对象,对加入自动释放池(autorelease调用)的变量进行管理,当drain时回收内存。
- (1) retain,该方法的作用是将内存数据的所有权附给另一指针变量,引用数加1,即retainCount+= 1;
- (2) release,该方法是释放指针变量对内存数据的所有权,引用数减1,即retainCount-= 1;
- (3) autorelease,该方法是将该对象内存的管理放到autoreleasepool中。

2. Objective-c语言中的ARC(Automatic Reference Counting)

在ARC中与内存管理有关的标识符,可以分为变量标识符和属性标识符,对于变量默认为__strong,而对于属性默认为unsafe_unretained。也存在autoreleasepool。

你可能感兴趣的:(Objective-C,内存管理)