什么是ARC
Automatic Reference Counting,自動引用計數,即ARC,可以說是WWDC2011和iOS5所引入的最大的變革和最激動人心的變化
你已經知道,ARC會自動幫你插入retain和release語句。ARC編譯器有兩部分,分別是前端編譯器和優化器。
前端編譯器會為“擁有的”每一個對象插入相應的release語句。如果對象的所有權修飾符是__strong,那么它就是被擁有的。如果在某個方法內創建了一個對象,前端編譯器會在方法末尾自動插入release語句以銷毀它。而類擁有的對象(實例變量/屬性)會在dealloc方法內被釋放。事實上,你并不需要寫dealloc方法或調用父類的dealloc方法,ARC會自動幫你完成一切。此外,由編譯器生成的代碼甚至會比你自己寫的release語句的性能還要好,因為編輯器可以作出一些假設。在ARC中,沒有類可以覆蓋release方法,也沒有調用它的必要。ARC會通過直接使用objc_release來優化調用過程。而對于retain也是同樣的方法。ARC會調用objc_retain來取代保留消息。
雖然前端編譯器聽起來很厲害的樣子,但代碼中有時仍會出現幾個對retain和release的重復調用。ARC優化器負責移除多余的retain和release語句,確保生成的代碼運行速度高于手動引用計數的代碼。
若有更多見解,請評論!