2011-09-06 140 views
0

我得到線55上分配的對象的潛在泄漏並存儲到'returnURL'內存泄漏錯誤。iPhone內存泄漏

我的代碼

NSString *returnURL = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]; 
return returnURL; 
[returnURL release]; 

請幫

+1

這是您使用autorelease的情況。 – Joe

回答

3

你應該返回之前「自動釋放」這樣的NSString:

NSString *returnURL = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]; 
return [returnURL autorelease]; 

或者圖案許多用途是簡單地在該網站自動釋放ALLOC:

NSString *returnURL = [[[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding] autorelease]; 

這基本上意味着你是說你不想保持參考,但你希望它保持「活着」的事件循環的其餘部分,所以你可以通過它回到T他是你方法的調用者,然後可以使用它而不用擔心所有權。

+0

謝謝,這工作! – HardCode

7

任何聲明後不執行return。因此,returnURL從未發佈。而且您不想在返回之前將其釋放,因爲您希望讓主叫方有機會保留該對象。事實上,這是自動釋放的經典例子:

return [returnURL autorelease]; 
+0

我應該在哪裏發佈它? – HardCode

+0

@Mr。 D這是autorelease是爲 – albertamg