//聯(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)定性的問題。