2011-09-06 141 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