2013-09-21 27 views
0

Class A正在將NSArray傳遞給classB中的一個函數,該函數依次將它傳遞給classC,而不是classC使用它一段時間。在3個函數之間傳遞NSArray - 保留還是複製?

我知道如果classB使用autorelease保留NSArray,比classC可以安全地使用它,因爲autorelease對於1次傳遞保持不變。是對的嗎 ?

或者,我應該做這樣的事情:

classB 

NSArray *local=[argumentArrayFromA copy]; //should i autorelease it ?? 
[classC send:local]; 

classC 
NSArray *goal=[argumentArrayFromB copy]; 
//use "goal" here safely . 
+1

ARC是不是一個選項?它簡化了內存管理,並允許您的代碼更專注於需要做什麼,而不是太多關於內存的處理。 – RyanR

+0

這是真的,但代碼現在真的很大,沒有ARC,所以我們現在繼續沒有它。無論如何,我想我的問題的答案很容易。 – Curnelious

回答

0

如果你周圍傳遞一個數組,而不是在任何地方修改它,你不想複製 - 這只是浪費內存。堅持保留。

+0

保留和autorelease是否安全? – Curnelious

+0

是的,保留你只是聲稱的對象。只要你在完成它的時候平衡一下(在使用它的方法的末尾),一切都會平衡。 – RyanR

+0

我問過autorelease,我知道它只是把它保存到下一個獲取它的函數中,那就是它,所以如果A autorelease它只有B可以使用它而不是C.是的? – Curnelious