OC 記憶體管理之MRC

2021-07-11 01:26:25 字數 711 閱讀 6729

隨著蘋果對xcode的逐步優化,arc記憶體管理方式已經深入人心,但現實是當下某些公司的一些老的專案可能還是用mrc模式寫的。所以這兩種方式我們都應該掌握。

mrc:mannulreference counting,顧名思義,就是手動記憶體管理。

1).管理的物件:一切繼承自nsobject,在堆區申請記憶體空間的oc物件。其它的由系統管理,不需要我們處理。

2)mrc的原則:誰建立,誰release;誰 retain ,誰 release,誰copy,誰release;

3).@property關鍵字:

retain:自動生成的set方法裡面有對傳進來的物件進行判斷的功能,如果傳進來的是新值,就先release舊值,再retain新值並賦值。(oc物件用該關鍵字)

assign:直接賦值的意思(基本資料型別用該關鍵字)

copy:一般用於 nsstring;

4)自動釋放池:只有在池中呼叫autorelease 方法才能把物件加入池中,自動釋放池的功能就是在池子排乾的時候向物件傳送一次release訊息,池中呼叫幾次autorelease,結束時就發幾次release 訊息。

5)迴圈retain問題:兩個類互為屬性,且均用retain宣告。就會造成迴圈retain的情況。解決辦法是將其中乙個宣告為assign

6)殭屍物件和野指標:乙個物件被釋放後只是將該塊記憶體空間標記為可用,並不是初始化它,這樣就會成為殭屍物件,訪問殭屍物件的指標我們就稱為野指標。

iOS開發之oc(十一) 記憶體管理MRC

掌握內容 理解記憶體管理的原理 1.理解部分 1點選工程 build settings 通過gar關鍵字的搜尋搜出automatic re.cou.將此選項的設定改稱no 1.2.2析構函式 可以用來驗證物件是否被釋放 語法 void dealloc void setdog dog dog void...

OC中記憶體管理 MRC 多物件管理

2019獨角獸企業重金招聘python工程師標準 將以乙個精武團這個遊戲來做例子。遊戲者需要開房,那麼這個房子就這個人使用,當這個人還在這個房間的時候就不能釋放這個房間,否則這個遊戲就有個bug,同樣的道理,這個房子可以被多個人引用。那什麼時候釋放這個房子就是個關鍵 當這個房子無人使用的時候就是釋放...

記憶體管理 MRC

記憶體管理,涉及的操作 記憶體管理的管理範圍 只有oc物件才需要進行記憶體管理的本質原因 引用計數器 4位元組 引用計數器常見操作 dealloc 野指標 vs.空指標 記憶體管理原則 set方法的記憶體管理 void setsomething something something dealloc...