九 oc中多物件記憶體管理基礎學習

2021-06-29 03:04:31 字數 2107 閱讀 6662

------- windows phone 7手機開發、.ios培訓、期待與您交流! -------

首先,我們的得知道如何關閉arc機制,新版的xcode與老版本的關閉,操作上有所不同。不僅僅如此,開啟arc後我們還需要開啟殭屍物件檢測功能,殭屍物件是指,當物件的內部引用計數器已經被清零了,那麼這個物件的記憶體空間會被**,那麼這個物件就叫做僵死物件,如果乙個物件已經成為僵死物件了,開發者再用指標去指向或者操作這個物件,編譯器就會報野指標錯誤,指出該指標指向了一塊壞的或者是不可用的記憶體區域。

關閉arc以及開啟僵死物件檢測的步驟:

通過這三個步驟,我們為接下來記憶體管理的基礎學習建立了基本的環境。

多物件記憶體管理的**演示:

main函式:

#import #import "boss.h"

#import "macbook.h"

#import "plane.h"

int main()

boss類的宣告與實現:

#import #import "macbook.h"

#import "plane.h"

@inte***ce boss : nsobject

// setter與getter方法的宣告

- (void)setage:(int)age;

- (int)age;

- (void)setmacbook:(macbook *)macbook;

- (macbook *)macbook;

- (void)setplane:(plane *)plane;

- (plane *)plane;

@end

#import "boss.h"

@implementation boss

- (void)setage:(int)age

- (int)age

- (void)setmacbook:(macbook *)macbook

}- (macbook *)macbook

- (void)setplane:(plane *)plane

}- (plane *)plane

- (void)dealloc

@end

macbook類的宣告與實現:

#import @inte***ce macbook : nsobject

@end

#import "macbook.h"

@implementation macbook

- (void)dealloc

@end

plane類的宣告與實現:

#import @inte***ce plane : nsobject

@end

#import "plane.h"

@implementation plane

- (void)dealloc

@end

程式執行後的結果為:

結合上面**以及**裡面的注釋,可以比較清楚的認識到多物件記憶體關的初步知識。總結為幾句話:有始有終,有加就有減,曾經讓物件計數器加1,就必須在最後讓物件計數器減1。最後還得注意一點的是,dealloc方法是物件方法,但是一般情況下不要直接呼叫,而是物件內部計數器清零後,系統會自動呼叫dealloc方法,把物件記憶體**,被**掉的物件,不能再進行操作,包括retain以及retaincount操作。

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

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

oc44 多物件記憶體管理

room.h import inte ce room nsobject property int no 房間號 end room.m import room.h implementation room void dealloc end import import room.h inte ce per...

OC物件記憶體管理

objective c物件記憶體管理 1,管理範圍 任何繼承了nsobject的物件,基本資料型別 int,char,float,double,struct,enum等 是不需要管理記憶體的。2,引用計數器 每個oc物件都有自己的引用計數器,是乙個整數,表示 物件被引用的次數 既有多少人正在使用這個...