ARC基本原理

基本簡介
  1. ARC是Automatic Reference Counting(自動引用計數(shù)器)的簡稱。
  2. ARC是ios5.0引入的新特性,完全消除手動管理內(nèi)存的繁瑣,編譯器會自動在適合的代碼里面插入適當(dāng)?shù)膔etain,release,autorelease的語句。我們不要再擔(dān)心內(nèi)存管理,因為編譯器幫我們做了這一切。
  3. ARC是編譯器的特性,并非運行時的特性,也不是其他編程語言中的垃圾回收器。因此自動管理和手動管理內(nèi)存其實一樣的,但是自動管理更加快速,因為編譯器執(zhí)行某些優(yōu)化。
基本原理
  1. ARC的規(guī)則就是只要對象沒有強指針引用,就會被釋放掉,換而言之 只要還有一個強引用指針變量指向?qū)ο螅敲催@個對象就會存在內(nèi)存中。弱指針指向的對象,會被自動變成空指針(nil指針),從而不會引發(fā)野指針錯誤。
基本使用
  1. ARC設(shè)置如下


    028B1D47-5AFC-4CD9-8996-663D6F5F4BBA.png
  2. 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
注意使用事項
  1. 循環(huán)引用
    解決辦法:一段用強引用,一段用弱引用。outlet的控件屬性都是weak修飾,因為他們已經(jīng)被父控件強引用。
    2.ARC只對OC對象的進(jìn)行內(nèi)存管理,對于CoreFundation的api使用,他的對象所有權(quán)沒有移交給OC對象管理,都需要手動去釋放。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容