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