什么是ARC
Automatic Reference Counting,自動引用計數(shù),即ARC,可以說是WWDC2011和iOS5所引入的最大的變革和最激動人心的變化
你已經(jīng)知道,ARC會自動幫你插入retain和release語句。ARC編譯器有兩部分,分別是前端編譯器和優(yōu)化器。
前端編譯器會為“擁有的”每一個對象插入相應(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來取代保留消息。
雖然前端編譯器聽起來很厲害的樣子,但代碼中有時仍會出現(xiàn)幾個對retain和release的重復(fù)調(diào)用。ARC優(yōu)化器負責(zé)移除多余的retain和release語句,確保生成的代碼運行速度高于手動引用計數(shù)的代碼。
若有更多見解,請評論!