ios 記憶體管理,objective c記憶體管理

2021-06-27 04:41:56 字數 779 閱讀 8836

整理下筆記,如有不準備的地方,望指正。

雖然現在蘋果已經大力推崇arc自動記憶體管理,記憶體管理已經不需要我們手動處理,作為新手,還是要了解一下。

首先如果是5.x以上版本的xcode,xcode建立新project的時候預設是適用arc的,如果想自己管理記憶體 可以在edit scheme中設定objective-c:enable zombie objects,勾上就行了。

記憶體管理的實質:

1.物件在完成建立的同時,內部會自動建立乙個引用計數器,這個計數器,是系統用來判斷是否**物件的唯一依據,當我們的引用計數retaincount = 0的時候,系統會毫不猶豫**當前物件

2.[物件 release]  reatincount - 1

3.[物件 retain]   reatincount + 1 ,返回self

4.我們的引用計數retaincount = 0的 物件就被銷毀了

5.dealloc函式,當乙個物件要被銷毀的時候,系統會自動呼叫dealloc函式,通知物件你將要被銷毀

記憶體管理原則(配對原則):只要出現了 new,alloc,retain,就一定配對出現乙個release,autorelease

如果你確定當前作用於中的物件已經不會再被使用了,為了防止野指標操作,通常我們會把不在使用的指標變數賦值為nil

只要物件的retaincount != 0 就會一直存在在記憶體中

記憶體洩漏指的就是,不再被使用的物件,一直在記憶體中沒有被銷毀

其實記憶體管理就要做兩件事,

1.不要發生記憶體洩露

2.防止適用野指標

ios記憶體管理

引用計數 每個物件有乙個與之相關的整數,稱作 引用計數器 或者 保留計數器 當某段 需要訪問乙個物件時,該段 會將物件的保留計數器 1,表示需要訪問這個物件 當結束對該物件的訪問時,保留計數器 1,表示它不在訪問該物件 當保留計數器為0時,物件被銷毀,所佔記憶體被系統收回。當使用new retain...

iOS記憶體管理

前提 1 以下是針對cocoa物件,不包括core foundation 2 cocoa物件都是用引用計數來跟蹤物件的記憶體使用情況的。3 在子類裡面父類先初始化和後釋放的原則。自己想下為什麼 棧空間和堆空間的區別。我們說的記憶體管理都是基於堆空間的,因為函式內的棧空間是由編譯器自己控制的。關於co...

IOS 記憶體管理

範圍 任何繼承了nsobject的物件,對基本資料型別無效 原理 每個物件內部都儲存了乙個與之相關聯的整數,稱為引用計數器 當使用alloc new或者copy建立乙個物件時,物件的引用計數器被設定為1 給物件傳送一條retain訊息,可以使引用計數器值 1 給物件傳送一條release訊息,可以使...