ios學習筆記之記憶體管理

2021-09-01 10:23:27 字數 860 閱讀 5180

一,記憶體管理型別定義

1,基本型別 任何c的型別,eg:

int,short,char,long,long long,struct,enum,union等屬於基本型別或結構體

記憶體管理對於c語言的基本型別無效

2,oc型別(非基本型別)

任何繼承於nsobject類的物件都屬於oc型別

也就是除了c之外的其他型別

二,oc物件結構

所有oc物件都有著乙個計數器,保留著當前物件被引用的數量,如果計數器為0,那麼就真正的釋放這個物件。

三,alloc retain release 函式

1, alloc函式是建立物件使用,建立完成後計數器為1(只用一次)

retain是對乙個物件的計數器+1 (可以多次呼叫)

release是對乙個物件計數器-1(減到0 物件就會從記憶體中釋放)

2,oc類中實現了引用計數器,物件知道當前被引用的次數。

如果需要引用物件,可以給物件傳送乙個retain訊息,這樣物件計數器就+1;

當不需要引用物件了,可以給物件傳送release訊息,這樣物件計數器就-1;

當計數器減到0,自動呼叫物件的dealloc函式,物件就會釋放記憶體;

計數器為0的物件不能再使用release和其他方法。

四,自動釋放池

自動釋放池是oc的一種記憶體自動**機制,可以將一些臨時變數通過自動釋放池來統一**釋放。

當自動釋放池本身銷毀的時候,池子裡面所有的物件都會做一次release操作。

任何oc物件只要呼叫autorelease方法,就會把該物件放到離自己最近的自動釋放池中(棧頂的釋放池)。

五,不是用alloc,retain,copy建立的物件,不能使用release釋放。

iOS 之記憶體管理

記憶體管理 誰建立,誰釋放,誰引用,誰管理。加號方法的實質 減號方法建立物件,然後掉用乙個autorelease,把這個建立的物件的記憶體交給系統管理。區域性變數內存在不用的時候進行釋放,全域性變數在dealloc方法中對他進行釋放。物件被釋放掉後會呼叫dealloc方法。1.區域性變數的記憶體管理...

iOS面試之 記憶體管理

記憶體管理 1.什麼是arc?arc是automatic reference counting自動引用計數,在程式編譯時自動加入retain release。在物件被建立時retain count 1,在物件被release時count 1,當count 0時,銷毀物件。程式中加入autorelea...

iOS開發 記憶體管理之記憶體分配

下面舉個例子說明下 nsstring string string nsstring alloc initwithstring hello ios 這裡string其實就是乙個指標,oc中除了基本資料型別之外的變數型別都是指標型別,oc物件都是通過指標進行操作的。第一段 定義了nsstring型別的指...