37-ARC的工作原理

什么是ARC

Automatic Reference Counting,自動引用計數(shù),即ARC,可以說是WWDC2011和iOS5所引入的最大的變革和最激動人心的變化

你已經(jīng)知道,ARC會自動幫你插入retain和release語句。ARC編譯器有兩部分,分別是前端編譯器和優(yōu)化器。

1. 前端編譯器

前端編譯器會為“擁有的”每一個對象插入相應(yīng)的release語句。如果對象的所有權(quán)修飾符是__strong,那么它就是被擁有的。如果在某個方法內(nèi)創(chuàng)建了一個對象,前端編譯器會在方法末尾自動插入release語句以銷毀它。而類擁有的對象(實例變量/屬性)會在dealloc方法內(nèi)被釋放。事實上,你并不需要寫dealloc方法或調(diào)用父類的dealloc方法,ARC會自動幫你完成一切。此外,由編譯器生成的代碼甚至?xí)饶阕约簩懙膔elease語句的性能還要好,因為編輯器可以作出一些假設(shè)。在ARC中,沒有類可以覆蓋release方法,也沒有調(diào)用它的必要。ARC會通過直接使用objc_release來優(yōu)化調(diào)用過程。而對于retain也是同樣的方法。ARC會調(diào)用objc_retain來取代保留消息。

2. ARC優(yōu)化器

雖然前端編譯器聽起來很厲害的樣子,但代碼中有時仍會出現(xiàn)幾個對retain和release的重復(fù)調(diào)用。ARC優(yōu)化器負責(zé)移除多余的retain和release語句,確保生成的代碼運行速度高于手動引用計數(shù)的代碼。

若有更多見解,請評論!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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