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

2021-07-03 19:40:55 字數 610 閱讀 1735

手動計數就不用提了,但自動釋放池與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。

MRC記憶體管理2自動釋放池

autorelease 示例1.person person person alloc init release 功能立即減1 autorelease 延遲減1 將物件放入池子中,返回乙個self person autorelease 代表池子將要銷毀,對池子中所有的物件進行 一次 release操作...

OC 記憶體洩露 自動釋放池

花絮 看到下面的 就想起這麼乙個調侃 乙個老程式設計師,功成名就,金盆洗手不在寫 後,決定練練書法。提筆思索良久後在紙上寫下 hello world 1 首先說下自動釋放池的底層實現 它是通過以 autoreleasepoolpage 為結點的雙向鍊錶來實現的。很類似棧的方式 對應push操作 底層...

記憶體洩露之自動記憶體管理 ARC

在xcode5.0之前都是手動記憶體管理的,但是在5.0之後就不需要程式猿管理了,為什麼呢?因為xcode會自動在我們需要釋放的地方加上release,這也是xcode的一項功能吧.這樣就能免去了我們對 的花太多的時間關心記憶體釋放的問題了,我們就可以專心的提高 實現某一項功能了.在arc模式下,系...