iOS Objective-C 中是否支持垃圾回收機(jī)制

//聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄

一、OC 回收機(jī)制概念

1.OC是支持垃圾回收機(jī)制的(Garbage collection簡(jiǎn)稱GC),

2.macOS開發(fā)中是支持的,但是iOS中,是不支持GC的。

3.iOS開發(fā)只支持手動(dòng)內(nèi)存管理和ARC,Mac開發(fā)支持GC垃圾回收機(jī)制, 18.8之后棄用了GC,

對(duì)劍使用ARC

4.ios開發(fā)是支持ARC(Automatic Reference Counting的簡(jiǎn)稱),ARC是在IOS5之后推出的新技術(shù),它與GC的機(jī)制是不同的。

二、OC 回收機(jī)制區(qū)別

我們?cè)诰帉懘a時(shí), 不需要向?qū)ο蟀l(fā)送release或者autorelease方法,也不可以調(diào)用delloc方法,編譯器會(huì)在合適的位置自動(dòng)給用戶生成release消息(autorelease),

ARC 的特點(diǎn)是自動(dòng)引用技術(shù)簡(jiǎn)化了內(nèi)存管理的難度.

ARC介于自動(dòng)垃圾回收(GC)和手動(dòng)內(nèi)存管理之間。就像垃圾回收,ARC讓程序員不再需要書寫retain/release/autorelease語句。但它又不同于垃圾回收,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)定性的問題。

謝謝!!!

最后編輯于
?著作權(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)容

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