ios之手動記憶體管理

2021-07-07 03:44:59 字數 1113 閱讀 7108

在建立物件的時候,回生成retaincount變數,alloc,new,retain都會使這個值+1,對應的release方法則會使這個值-1。當retaincount=0時系統會呼叫dealloc方法使系統銷毀改物件。所以我們在使用手動記憶體管理時,要注意一下問題:

1.原則:記憶體管理原則(配對原則)

建立物件時一定要保證alloc,new,retain時,後面對應出現release方法。

如下:

void test
2.避免如下問題

(1)野指標問題:呼叫乙個已經被銷毀的物件的方法。如下

void test
(2)記憶體洩漏問題:物件已經不在使用,但是記憶體一直沒有釋放。如下

void test
(3)重寫dealloc方法,呼叫[super dealloc]來釋放父類中的變數

3. 多個物件的記憶體的釋放問題

@inte***ce

person

;-(void) setcar:(car *car);

@end

@implementation

person

-(void) setcar:(car *car)

} -(void) dealloc

@end

@implementation

car -(void) dealloc

@end

-(void) test

4.@property主要完成三種操作

(1)生成get,set方法

(2)生成get,set方法的簡單實現

(3)如果沒有對應的成員變數宣告,則會生成以_變數名的成員變數

5.nonatomic和atomic的區別

nonatomic:不生成多執行緒相關的**(ios開發都用這個)

atomic:生成多執行緒相關的**

6.retain,assign的區別

iOS之手動記憶體管理

objective c採用了一種被稱為引用計數 reference counting 的機制來追蹤物件狀態,每個物件都有乙個與之關聯的整數,被稱為引用計數器。當乙個物件的引用計數為0時,表明程式不再需要該物件,物件會被銷毀。若是物件還持有其他物件的引用,必須重寫dealloc方法,在方法中釋放該物件...

iOS之手動記憶體管理

記憶體管理是每個程式設計師必須要掌握的技能,也是寫好乙個程式,寫乙個好程式的必備技能.下面談一下我對ios開發中的記憶體管理的理解.如果你是乙個比較新的ios程式設計師,那麼恭喜你,你已經很輕鬆了,因為在現在的開發中已經很少去手動管理記憶體了,那麼問題來了,既然不需要去手動管理了那學他還有什麼用呢?...

記憶體洩露之手動記憶體管理 MRC

由於移動裝置的記憶體是有限的,如果建立的物件用完不及時的銷毀 釋放 的話,就會造成記憶體洩露.如果該物件的記憶體空間釋放了,但是依舊在使用的話,那麼就是殭屍物件.同時指向殭屍物件的指標就是野指標.對於記憶體管理的原則是,不用的物件就要 其所占用的空間,防止造成記憶體洩露.並且我們要知道,記憶體洩露主...