基本簡介
- 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ī)則就是只要對象沒有強指針引用,就會被釋放掉,換而言之 只要還有一個強引用指針變量指向?qū)ο螅敲催@個對象就會存在內(nèi)存中。弱指針指向的對象,會被自動變成空指針(nil指針),從而不會引發(fā)野指針錯誤。
基本使用
-
ARC設(shè)置如下
028B1D47-5AFC-4CD9-8996-663D6F5F4BBA.png -
ARC模式下 retain ,release,retainCount 是不能夠調(diào)用的。
例子1
7F6ACD2D-DED5-497C-9ACF-912B1C3081F0.png
例子2
dealloc可以重寫,但是不能用[super dealloc],編譯器會報錯。

0725DA76-0AF9-4C60-B330-1C1F8378F363.png
例子3

941E4E52-DC62-423E-A81B-93EB5FD0CB3F.png

DDD75C44-DCAA-4D68-83D3-4F8988BB4188.png
例子4

2C8CBF67-16E2-4119-A787-DCA77926608E.png

4D0E2D6F-F1E8-4CC1-8155-69D2EFF69646.png
例子5__weak弱指針

7BA16564-2CAE-427D-AE63-84B9544AEDA3.png
注意使用事項
- 循環(huán)引用
解決辦法:一段用強引用,一段用弱引用。outlet的控件屬性都是weak修飾,因為他們已經(jīng)被父控件強引用。
2.ARC只對OC對象的進(jìn)行內(nèi)存管理,對于CoreFundation的api使用,他的對象所有權(quán)沒有移交給OC對象管理,都需要手動去釋放。

