OC 記憶體管理基礎

2021-07-11 14:14:21 字數 674 閱讀 7983

oc記憶體管理基礎

本文**:

一. retain和release基本使用

使用注意:

1.你想使用(占用)某個物件,就應該讓物件的計數器+1(讓物件做一次retain操作)

2.你不想再使用(占用)某個物件,就應該讓物件的計數器-1(讓物件做一次release)

3.誰retain , 誰release

4.誰alloc,誰release 如:

int  main()

二. 空指標,野指標,殭屍物件

空指標:沒有任何東西的指標(儲存的東西是nil, nall0)

給空指標傳送訊息不會報錯

野指標:指向殭屍物件(不可用記憶體)的指標,給野指標傳送訊息會報錯

錯誤:exc_bad_accecc:訪問一塊壞的記憶體(已經被**,已經不可用的記憶體)

如:int main()

會報經典錯誤:exc_bad_accecc:訪問一塊壞的記憶體(已經被**,已經不可用的記憶體)

殭屍物件:所占用記憶體已經**的物件,殭屍物件不能再使用

經典錯誤:message  sent  to deallocated  instauce  ox100109a10

意思是:給已經釋放的物件傳送了一條錯誤的訊息

OC基礎 手動記憶體管理

建立物件 1.分配記憶體空間,儲存物件 2.初始化成員變數 3.反回物件的指標位址 1.物件在完成建立的同時,內部會自動建立乙個引用計數器,這個計數器,是系統用來判斷是否 物件的唯一依據,當我們的引用計數 retaincount 0 的時候,系統會毫不猶豫 當前物件 2.物件release reat...

Oc 記憶體管理

1 對你自己擁有的物件負責,你只能釋放你擁有的物件 2 凡是你通過 retain alloc copy等手段獲得了所有者的物件,都必須在你不使用的時候來呼叫release autorelease等手段來釋放對他的所有權 3 在一定的 段內,對同乙個物件所作的copy alloc retain的操作次...

OC記憶體管理

1.記憶體管理原則 如果對乙個物件使用了alloc mutable copy retain,那麼你必須使用相應的release或者autorelease。2.管理範圍 任何繼承了nsobject 的物件,對其他基本資料型別 int char float double struct enum等 無效 ...