垃圾回收機(jī)制與oc的ARC

oc的垃圾回收與ARC

ARC介于自動(dòng)垃圾回收(GC)和手動(dòng)內(nèi)存管理之間。就像垃圾回收,ARC讓程序員不再需要書寫retain/release/autorelease語(yǔ)句。但它又不同于垃圾回收,ARC無法處理retaincycles。在ARC里,如果兩個(gè)對(duì)象互相強(qiáng)引用(strong references)將導(dǎo)致它們永遠(yuǎn)不會(huì)被釋放,甚至沒有任何對(duì)象引用它們。

因此,盡管ARC能免去程序員大部分內(nèi)存管理問題,但仍然要程序員自己避免retaincycles或手動(dòng)打斷對(duì)象之間的retain循環(huán)。

ARC和蘋果的垃圾回收之間還有一個(gè)重要的不同:ARC不是強(qiáng)制的。而對(duì)于蘋果的垃圾回收,要么整個(gè)程序都使用,要么都不用。也就是說在app中的所有O-C代碼,包括所有的蘋果框架和所有的第3方庫(kù)必須支持垃圾回收,才能使用垃圾回收。相反,ARC和非ARC代碼可以在一個(gè)app中和平共處。這使得將項(xiàng)目可以零星地遷移到ARC 而不會(huì)像垃圾回收起初遇到的各種兼容性和穩(wěn)定性的問題。


java的垃圾回收與oc的ARC:

1.GC?of java is Runtime, while?ARC?is compile time.(GC是java運(yùn)行時(shí),而ARC是編譯時(shí)。)

2.GC?has reference to the objects at runtime and check for the dependencies of object runtime. While?ARC?appends the release, retain, autorelease calls at compiletime.(GC引用的對(duì)象在運(yùn)行時(shí),檢查運(yùn)行時(shí)對(duì)象的依賴項(xiàng)。而ARC在編譯時(shí)間 添加調(diào)用release, retain, autorelease)

最后編輯于
?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 37.cocoa內(nèi)存管理規(guī)則 1)當(dāng)你使用new,alloc或copy方法創(chuàng)建一個(gè)對(duì)象時(shí),該對(duì)象的保留計(jì)數(shù)器值為1...
    如風(fēng)家的秘密閱讀 961評(píng)論 0 4
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,655評(píng)論 30 472
  • 正是冷雨時(shí)節(jié),細(xì)雨綿綿,大有不絕之勢(shì)。路上行人攢動(dòng),燈火閃爍五彩,傘云密布,如流轉(zhuǎn)換。我豎了領(lǐng)子,落荒而行。細(xì)細(xì)的...
    舊日王謝堂前燕閱讀 167評(píng)論 0 1
  • 像往常一樣 上車 下車 回家 許久不關(guān)的鐵門 今天卻想起了自己的義務(wù) 緊緊地關(guān)著 抬手輸入密碼 拉門 卻不見門被拉...
    夏天味的冰激凌閱讀 469評(píng)論 0 0
  • Cash call:foreign-exchange worries 詞匯 wary:謹(jǐn)慎的reliant:依賴的...
    牧野詩(shī)歌閱讀 626評(píng)論 0 0

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