Objective-C內存管理機制
阿新 • • 發佈:2017-09-15
析構函數 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內存管理機制