1. 程式人生 > >記憶體管理中自動釋放池與ARC的區別

記憶體管理中自動釋放池與ARC的區別

手動計數就不用提了,但自動釋放池與arc分不清,一開始聽MJ講課時,總是自己release,當我release物件時,就會出現arc禁止,當時也不知道怎麼回事,後來知道了arc是自動引用計數,但是還是不懂與自動釋放池的區別。
自動釋放池是NSAutoreleasePool的例項,其中包含了收到autorelease訊息的物件。當一個自動釋放池自身被銷燬(dealloc)時,它會給池中每一個物件傳送一個release訊息。

而ARC 則是自動引用計數(automatic reference counting,ARC),是編譯器幫你自動加入retain與release語句,無需自己動手。

自動釋放池用兩種宣告方法:
第一種

@autoreleasepool{

//程式碼
}

第二種

NSAutoreleasePool *pool = [NSAutoreleasePool new];
//程式碼
[pool release];

而ARC則就是在選項中開啟就行了。
區別就是一句話,ARC會自動為物件加上 retain,release。
而自動釋放池就是把release變成autorelease。