什么是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)化器負(fù)責(zé)移除多余的retain和release語句,確保生成的代碼運(yùn)行速度高于手動引用計數(shù)的代碼或渤。
若有更多見解,請評論奕扣!