2011-10-01 84 views
0

我敢肯定這是正確的,但如果可能的話,你可以確認Objective-C的釋放,自動釋放,澄清需要

[[self doublyLinkedList] add:[n1 autorelease]]; 

[[self doublyLinkedList] add:n1]; 
[n1 release]; 

都將產生相同的retainCount爲N1 ,一旦泳池排水

+1

根據你是否擁有'n1',這兩個選項都是正確的或不正確的。如果您創建或保留它,您擁有'n1'。 – albertamg

回答

1

是的,結果在兩種情況下都是相同的。

+0

謝謝你!我也可以從n1的班級'返回[自我減免]嗎? – JAM

+0

這將是一個不好的做法。對象不應該在自己的selfs上調用'retain'和'release'('autorelease')。 –

+0

@aleksejs答案是正確的,評論不是。返回對象的方法通常應該返回自動釋放對象。一個工廠方法將返回'[實例autorelease]'或一個實例方法可能經常做'return [[self retain] autorelease];' – bbum

3

雖然這兩種方法最終都會導致相同的保留計數,但明確調用釋放會更有效,因爲不必將對象添加到自動發佈池中並從中移除。

+0

好點,謝謝 – JAM