iPhone應用程序的內存管理學習

1) 兩種內存管理中常犯的錯誤
* 過早釋放(premature deallocation)過早釋放了仍有程序應用的內存塊
* 內存泄露(memory leaks)未釋放已無程序應用的內存塊

2) Object C中的內存分配不使用malloc(size)/free(buffer)這樣的方式,而是用對象的alloc和dealloc方法來進行分配和釋放,但對象不接受來自外部的dealloc消息,而是通過引用計數來控制。

3) 可以通過Class *instance=[[[Class alloc] init] autorelease]創建自動釋放的對象,該對象指針會加入NSAutoreleasePool創建的隊列中進行管理。另外:自動釋放的對象進行 instance release會導致double free錯誤

4) 對象賦值的時候要進行retain,如:

Class *a=[[Class alloc] init];
Class *b = a;
[b retain]
[a release]
a=nil;

5) 對象成員也是對象的,需要在對象的dealloc函數中對成員對象的進行手工釋放,後在調用對象父類的dealloc, [super dealloc]

遺留問題:
1) 使用Instruments進行內存泄露調試
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章