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