Objective-C内存管理机制

Posted 小兔无情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Objective-C内存管理机制相关的知识,希望对你有一定的参考价值。

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

以上是关于Objective-C内存管理机制的主要内容,如果未能解决你的问题,请参考以下文章

读书笔记系列—Objective-C中的内存管理

Objective-C内存管理之ARC

Objective-C内存管理之ARC

Objective-c的内存管理MRC与ARC

内存管理机制

内存管理-MRC与ARC详解