伴隨這iOS5的發(fā)布,xcode中加入了一個振奮人心的新特性:ARC(Automatic Reference Counting,俗稱自動引用計(jì)數(shù))。
開啟了這個特性之后,我們就不用在管理內(nèi)存了。llvm3.0在編譯期會自動把retain神馬的加上。這就省去了很多麻煩事兒,可以把更加多的精力放在功能的實(shí)現(xiàn)上。 如何開啟arc: 在創(chuàng)建項(xiàng)目的時候開啟arc:
在創(chuàng)建完后開啟arc: 在target的bulid setting中找到objective-C Automatic Reference Counting,選擇YES:
如何讓沒有使用ARC的代碼和使用了ARC的代碼共存? 目前很多開源的框架,和我們之前寫的代碼中,都是手動管理內(nèi)存的。代碼中有很多retain,release,autorelease等和內(nèi)存管理相關(guān)的代碼。如果開啟了arc特性后,xcode在沒有就會報(bào)錯。一個辦法是手動把這部分的代碼去掉,同時還要加各種__unsafe_retained之類的標(biāo)記。這將是一個繁重的體力活。 其實(shí)我們llvm3.0中支持手動管理內(nèi)存的代碼和使用arc技術(shù)的代碼共存的。 首先,需要開啟arc特性。 然后我們可以告訴編譯器那些代碼沒有使用arc。 具體操作如下,在target的bulid phases中展開compile source s中為不需要arc的代碼加上-fno-objc-arc的參數(shù)。
上圖就是我在一個arc的工程中加入了ASIHttpRequest。 如果想Three20這樣添加框架的方式,可以不用設(shè)置這個參數(shù),因?yàn)槭怯胮roj之間的依賴。