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 關鍵字...