autorelasepool
MRC:
????mrc環(huán)境下我們需要遵守誰創(chuàng)建誰釋放的原則,但由于某些特殊場景因此我們需要使用到自動釋放池,比如或個A方法返回了a1對象,按裝誰創(chuàng)建誰釋放的原則,我們應(yīng)該在A方法說將創(chuàng)建的a1對象進行release操作,但是這樣的話返回的a1對象就無法使用了。因此我們需要使用autorelase進行延遲釋放。系統(tǒng)會幫我們在進行一次runloop操作后進行釋放操作。
ARC:
? ? arc環(huán)境下,系統(tǒng)幫我們自動管理內(nèi)存。在arc環(huán)境下我們可以把更多的精力放在程序的優(yōu)化上。arc實現(xiàn)原理是在蘋果在編譯的過程中,在合適的位置自動添加釋放操作。編譯時采用LLVM編譯器。
? ? 編譯器的執(zhí)行操作大致分為三步:
????前端:詞法分析、語法分析、語義分析、生成中間碼
????優(yōu)化器:中間代碼優(yōu)化
????后端:生成機器碼
oc編譯:
? ? 預(yù)處理:將import\宏定義進行預(yù)處理(簡單來說就是把import的文件導(dǎo)入進去,把宏處理給進行替換操作)
????詞法分析:將代碼進行拆分進行分析
? ? 語法分析:將代碼生成語法樹進行分析
? ? ?編譯器編譯:編譯成中間代碼? ?
????后端:生成目標代碼\匯編\鏈接其它動態(tài)庫靜態(tài)庫\編譯成合適蘋果架構(gòu)的代碼
? ??