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
原文地址:https://www.cnblogs.com/jacky1982/p/7524103.html