2010-08-27 62 views
1

我想知道,是什麼(如果有的話)是使用創建對象的區別:[[alloc] init]和[[thing] retain]之間有什麼區別?

NSThing *thing = [[NSThing alloc] initWithObject:object]; 

VS

NSThing *thing = [[NSThing thingWithObject:object] retain]; 

是否有怎樣的內存管理工作有區別嗎?另外,什麼時候使用一種方法比較常見?

回答

8

分配和初始化對象是更有效,因爲thingWithObject:會做一個alloc,然後init,然後autorelease你有retain反擊,讓你添加一些自動釋放池。第一種選擇只涉及allocinit

就個人而言,我使用顯式alloc當我要明確的是,對象的生命週期會由我來處理,我用任何對象的方便的方法(thingWithThing:),我將不再需要範圍之外它

例如,在循環內顯式分配和初始化通常是首選,這樣就不會氾濫自動釋放池。我還使用明確的alloc + init而非thingWithThing: + retain表示需要在運行循環的迭代中存活的對象。

相關問題