1.什么是ARC
-
Automatic Reference Counting,自動引用計數(shù),即ARC,可以說是WWDC2011和iOS5所引入 的最大的變革和最激動人心的變化。ARC是新的LLVM 3.0編譯器的一項特性,使用ARC,可以說一 舉解決了廣大iOS開發(fā)者所憎恨的手動內存管理的麻煩厕倍。
手動管理內存, 可以簡稱MRC (Manual Reference Counting)
在工程中使用ARC非常簡單:只需要像往常那樣編寫代碼,只不過永遠不寫retain,release和autorelease三個關鍵字就好~這是ARC的基本原則蜻牢。
當ARC開啟時,編譯器將自動在代碼合適的地方插入retain, release和autorelease,而作為程序猿,完全不需要擔心編譯器會做錯(除非開發(fā)者自己錯用ARC了)膀藐。
2.ARC的注意點和優(yōu)點
-
ARC的注意點
- ARC是編譯器特性,而不是運行時特性
- ARC不是其它語言中的垃圾回收, 有著本質區(qū)別
-
ARC的優(yōu)點
- 完全消除了手動管理內存的煩瑣, 讓程序猿更加專注于app的業(yè)務
- 基本上能夠避免內存泄露
- 有時還能更加快速,因為編譯器還可以執(zhí)行某些優(yōu)化
3.ARC的判斷原則
-
ARC的判斷原則
- 只要還有一個強指針變量指向對象落君,對象就會保持在內存中
-
強指針
- 默認所有指針變量都是強指針
- 被__strong修飾的指針
Person *p1 = [[Person alloc] init];
__strong Person *p2 = [[Person alloc] init];
-
弱指針
- 被__weak修飾的指針
__weak Person *p = [[Person alloc] init];
注意:當使用ARC的時候,暫時忘記“引用計數(shù)器”,因為判斷標準變了。