2010-11-03 26 views

回答

22

請通過this內存管理長篇教程。它可能需要一些時間來閱讀整個,但它很好地解釋了基本的東西。

編輯:關於複製 - 當你使用保留,那麼你只是增加對象的保留計數。但是,當您使用副本時,將創建對象的單獨副本(淺拷貝)。單獨的裝置,它是一個不同的對象,具有保留計數1.

例如,

 
NSObject *obj1 = [[NSObject alloc] init]; // obj1 has retain count 1 

// obj1 and obj2 both refer same object. now retain count = 2 
// any change via obj1 will be seen by obj2 and vice versa, as they point same object 
NSObject *obj2 = [obj1 retain]; 

// obj3 is a separate copy of the object. its retain count is 1 just like newly allocated object 
// change via obj3 will not affect obj1 or obj2 and vice versa as they are separate objects 
NSObject *obj3 = [obj1 copy]; 

+0

謝謝。本教程解釋了保留意味着什麼以及相當多的基本內存管理,但並沒有真正解釋複製方法的作用。有沒有更多關於內存管理的教程,或者只有alloc內存部分?謝謝 – TheAmateurProgrammer 2010-11-03 12:00:11

+1

檢查編輯。 – taskinoor 2010-11-03 12:17:45

+0

而且當你有時間時,請查看William Remacle建議的關於內存管理的詳細指南。 – taskinoor 2010-11-03 12:26:12

4

的Alloc:當你需要的內存分配(您想創建一個對象,你需要分配它的存儲空間)

每個對象都有一個保留計數指示對象的數量有對該物體的所有權利益。它自動完成alloc複製(複製意味着你想要一個該對象的副本)。但你也可以通過使用保留關鍵字來完成。

當保留計數== 0,則對象的dealloc 方法將被調用和將釋放該對象的所有分配。

我希望它很清楚。 如果您想了解更多信息:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html

+0

1用於指向最好文檔。 – taskinoor 2010-11-03 12:27:13

相關問題