一,arc小結
1.有了arc,我們的**可以清晰很多,你不再需要考慮什麼時候retain或release物件。唯一需要考慮的是物件之間的關聯,也就是哪個物件擁有哪個物件?
2.arc也有一些限制:
1> 首先arc只能工作於objective-c物件,如果應用使用了core foundation或malloc()/free(),此時還是需要你來手動管理記憶體
2> 此外arc還有其它一些更為嚴格的語言規則,以確保arc能夠正常地工作
3.雖然arc管理了retain和release,但並不表示你完全不需要關心記憶體管理的問題。因為strong指標會保持物件的生命,某些情況下你仍然需要手動設定這些指標為nil,否則可能導致應用記憶體不足。無論何時你建立乙個新物件時,都需要考慮誰擁有該物件,以及這個物件需要存活多久
4.arc還能很好地結合c++使用,這對遊戲開發是非常有幫助的。對於ios 4,arc有一點點限制(不支援weak指標),但也沒太大關係
二,arc使用注意總結
1.不能直接呼叫dealloc方法,不能呼叫retain,release,autorelease,retaincount方法,包括@selector(retain)的方式也不行
2.可以用dealloc方法來管理一些資源,但不能用來釋放例項變數,也不能在dealloc方法裡面去掉[super dealloc]方法,在arc下父類的dealloc同樣由編譯器來自動完成
3.core foundation型別的物件仍然可以用cfretain,cfrelease這些方法
4.不能再使用nsallocateobject和nsdeallocateobject物件
5.不能在c結構體中使用物件指標,如果有類似功能可以建立乙個objective-c類來管理這些物件
6.在id和void*之間沒有簡便的轉換方法,同樣在objective-c和core foundation型別之間的轉換都需要使用編譯器制定的轉換函式
7.不能再使用nsautoreleasepool物件,arc提供了@autoreleasepool塊來代替它,這樣更有效率
8.不能使用記憶體儲存區(不能再使用nszone)
9.不能以new為開頭給乙個屬性命名
10.宣告iboutlet時一般應當使用weak,除了對storyboard這樣nib中間的頂層物件要用strong
11.weak相當於老版本的assign,strong相當於retain
iOS 開發,混合使用 ARC 和非ARC
前提知識 arc automatic reference counting,自動引用計數 在開發 ios 3 以及之前的版本的專案時我們要自己負責使用引用計數來管理記憶體,比如要手動 retain release autorelease 等,而在其後的版本可以使用 arc,讓系統自己管理記憶體。問題...
IOS混合使用ARC
在專案開發過程中我們通常會用到第三方提供的源 麻煩的是有些開源專案用的是 arc,有的用的是非 arc。我在使用 svprogresshud 做等待檢視時遇到問題,最終發現該專案使用的是 arc 模式,而我的工程使用的是非 arc 模式。解決方法是這樣的 xcode 專案中我們可以使用 arc 和非...
ARC下記憶體洩露總結
a有個屬性b,b有個屬性a,如果都是strong修飾的話,兩個物件都無法釋放。這種問題常發生於把delegate宣告為strong屬性了。例,inte ce sampleviewcontroller property nonatomic,strong sampleclass sampleclass ...