黑馬程式設計師 OC 記憶體管理

2021-06-22 03:35:42 字數 961 閱讀 4449

1.什麼是記憶體管理

>管理範圍:任何繼承了nsobject的物件,對其他基本型別無效

2.物件的基本結構

>每個oc物件都有自己的引用計數器,是乙個整數,表示「物件被引用的次數」,即有多少個人正在使用oc物件

>每個oc物件內部專門有4個位元組的儲存空間來儲存引用計數器

3.引用計數器的作用

>當使用alloc new 或者copy建立乙個新物件時,新物件的引用計數器預設就是1.

>當乙個物件的引用計數器值為0時,物件占用的記憶體就會被系統**

4.引用計數器的操作

>給物件傳送一條retain訊息,可以使用引用計數器+1

>給物件傳送一條release訊息可以使引用計數器值-1.

>可以給物件傳送retaincount訊息獲取當前的引用計數器值。

5.物件的銷毀

>當乙個物件的引用計數器值為0時,那麼它將被銷毀,其占用的記憶體被系統**

>當乙個物件被銷毀時,系統會自動向物件傳送一條dealloc訊息

>一般會重寫dealloc方法,在這裡釋放相關資源,dealloc就像物件的遺言

>一旦重寫了dealloc方法,就必須呼叫[super dealloc},並且放在最後呼叫

>不要直接呼叫dealloc方法

>一旦物件被**了,它占用的記憶體就不再可用,堅持使用會導致程式崩潰

6.記憶體管理原則

a.誰建立,誰release

>如果你通過alloc\new 或[mutable]copy來建立乙個物件,那麼你必須呼叫release或autorelease

>換句話說,不是你建立的,就不用你去[auto]release。

b.誰retain,誰release

只要你呼叫了retain,無論這個物件是如何生成的,你都要呼叫release

c.總結

有始有終,有加就有減

曾經讓物件的計數器+1,就必須再最後讓物件計數器-1

黑馬程式設計師 OC基礎 記憶體管理

oc的區域性變數在 塊結束時被系統銷毀,記憶體被 oc的物件,內部有引用計數器,當引用計數器的值為0時,被系統銷毀,記憶體被 區域性變數存放在棧中.物件存放在堆中.注意,物件指標還是存放在棧中,物件本身占用的記憶體存放在堆中.在oc中,我們要對自己寫的繼承了nsobject的物件進行記憶體管理.物件...

黑馬程式設計師 OC語言 5 記憶體管理

若排版有錯誤,請檢視pdf版 2 管理範圍 任何繼承了 nsobject 的物件,對其他基本資料型別 int char float double struct enum等 無效 1 每個oc物件都有自己的引用計數器,是乙個整數,表示 物件被引用的次數 即有多少人正在使用這個oc物件。2 每個oc物件...

黑馬程式設計師 OC學習筆記 記憶體管理

property和 synthesize關鍵字 property和 synthesize關鍵字可以幫助我們構造屬性的設定和訪問方法即setter和getter方法,可以省去我們很多重複機械的 在宣告檔案中使用 property 宣告變數,在實現檔案中用 synthesize property 關鍵字...