2011-08-25 79 views
0

我發現了這個奇怪的東西。 XCode儀器告訴我,這條線退貨時泄漏

return (SDZPerson*)[[[SDZPerson alloc] initWithNode: node] autorelease]; 

泄漏。但是,如果我將其更改爲:

SDZPerson* person = [[[SDZPerson alloc] initWithNode: node] autorelease]; 
return person; 

儀器不再在此處報告泄漏。它真的是泄漏還是沒有?

謝謝大家提前。

+0

你知道在哪裏發生泄漏這實際上是?通常它只是說這是對象被分配的地方。 – jtbandes

+0

正如我所說,當我將它更改爲兩行時,警告消失。沒有更多的應用程序泄漏,只是這一行。 – avuthless

+0

爲什麼在第一個片段中將類型轉換添加到'SDZPerson *'中? – Eimantas

回答

0

即使這兩個代碼片段略有不同(第一個包含類型轉換),但我懷疑這些工具將這個作爲返回語句中autorelease的泄漏。

可以使用在return語句中添加autorelease。

你應該給它一個嘗試

SDZPerson* person = [[SDZPerson alloc] init]; 
/** do your stuff here if needed */ 
return [person autorelease]; 

甚至

return [[[SDZPerson alloc] init] autorelease; 
+0

謝謝。至少我知道這不是一個錯誤。也許還有一些其他的泄漏,或者只是樂器誤解。謝謝你們的快速響應。 – avuthless