基本簡介
- ARC是Automatic Reference Counting(自動引用計數(shù)器)的簡稱授嘀。
- ARC是ios5.0引入的新特性憨琳,完全消除手動管理內(nèi)存的繁瑣,編譯器會自動在適合的代碼里面插入適當(dāng)?shù)膔etain旬昭,release篙螟,autorelease的語句。我們不要再擔(dān)心內(nèi)存管理问拘,因為編譯器幫我們做了這一切遍略。
- ARC是編譯器的特性,并非運行時的特性骤坐,也不是其他編程語言中的垃圾回收器绪杏。因此自動管理和手動管理內(nèi)存其實一樣的,但是自動管理更加快速纽绍,因為編譯器執(zhí)行某些優(yōu)化蕾久。
基本原理
- ARC的規(guī)則就是只要對象沒有強(qiáng)指針引用,就會被釋放掉拌夏,換而言之 只要還有一個強(qiáng)引用指針變量指向?qū)ο笊敲催@個對象就會存在內(nèi)存中。弱指針指向的對象障簿,會被自動變成空指針(nil指針)盹愚,從而不會引發(fā)野指針錯誤。
基本使用
- ARC設(shè)置如下
-
ARC模式下 retain 站故,release皆怕,retainCount 是不能夠調(diào)用的。
dealloc可以重寫西篓,但是不能用[super dealloc]愈腾,編譯器會報錯。
注意使用事項
- 循環(huán)引用
解決辦法:一段用強(qiáng)引用岂津,一段用弱引用顶滩。outlet的控件屬性都是weak修飾,因為他們已經(jīng)被父控件強(qiáng)引用寸爆。
2.ARC只對OC對象的進(jìn)行內(nèi)存管理礁鲁,對于CoreFundation的api使用,他的對象所有權(quán)沒有移交給OC對象管理赁豆,都需要手動去釋放仅醇。