1、ARC基本簡介性能
2、ARC基本原理優化
一、規則spa
ARC 的規則很是簡單:只要還有一個強指針變量指向對象,對象就會保持在內存中指針
二、強指針和弱指針code
3、使用注意對象
ARC規則:類對象一旦沒有強指針指向它則被銷燬blog
驗證代碼:內存
/****************************** Person.h文件 ***********************************/ #import <Foundation/Foundation.h> @interface Person : NSObject @end
/****************************** Person.m文件 ***********************************/ #import "Person.h" @implementation Person - (void)dealloc { NSLog(@"Person對象被銷燬"); } @end
/****************************** main.m文件 ***********************************/ #import "Person.h" #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { Person *p = [[Person alloc] init]; p = [[Person alloc] init]; // 這行代碼執行完說明Person類對象的指針p 指向了另外一個類對象 那麼上面的類對象Person被銷燬 執行一次dealloc方法
return 0;
}
// main方法執行完畢 局部變量p被回收那麼第二個Person類對象也被回收再執行一次dealloc方法
// 再一次說明一個對象若是沒有一個強指針指向它的話,對象就會被回收
修改上面的main方法,驗證強指針和弱指針:開發
__strong Person *p1 = [[Person alloc] init]; // 默認都是強指針所以不須要寫 __strong __weak Person *p2 = p1; // 將強指針指的內存地址 賦值給弱指針 那麼強弱指針指向同一塊內存地址 p1 = nil; // 清空強指針 這行代碼執行完畢就調用了 - dealloc方法 說明Person類對象被銷燬了 p2 = nil; // 清空弱指針 強指針清空後Person類對象已經被銷燬了 並且弱指針系統會自動清空 那麼就不會執行 - dealloc方法了 所以這行代碼能夠不寫 return 0;