ARC基本原理

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

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

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

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