1. 程式人生 > >Objective-C內存管理機制

Objective-C內存管理機制

析構函數 tomat 機制 如果 ngs 都是 範圍 管理 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內存管理機制