为什么这段代码会产生泄漏?

时间:2011-02-05 19:42:51

标签: iphone xcode memory-leaks

总共Noob在这个论坛上第一次假设。

我正在编写我的第一个iPhone应用程序。有问题的代码是在cellForRowAtIndexPath方法中填充我的UITableViewCell。

当我打开Leaks Instrument运行我的应用程序时,泄漏部分指向我的代码的这一部分。我已经阅读了关于本网站各种书籍和帖子的内存管理,据我所知,下面的代码似乎符合所需的alloc / release编码指南。但是,Leaks工具仍指向此特定部分。我根本不明白为什么。

我们将不胜感激。

ModelClass * myModelData = [myTempDataArray objectAtIndex:[indexPath row]];

NSString * myURL = [[NSString alloc] initWithFormat:@"%@/images/%@", SERVER_URL, [myModelData publisherLogoFileName]];
NSURL * imageURL = [[NSURL alloc] initWithString:myURL];
[myURL release];
[[cell productImageM] setUrl:imageURL];
[imageURL release];
[[self objMan] manage:[cell productImageM]];

return cell;

2 个答案:

答案 0 :(得分:1)

泄漏工具不会告诉您应该释放对象的位置,它会告诉您分配对象的位置。

这段代码看起来很好;你拥有myURL足够长的时间来创建imageURL然后释放它。您将imageURL提供给单元格的productImageM,然后将其释放。然后对你不拥有的对象进行一些操作。

猜测,[cell productImageM]返回的对象类型会保留其Url属性,然后泄漏它。

答案 1 :(得分:0)

您可以尝试使用Build&从“生成”菜单中分析选项。一般来说,它应该表明泄漏的确切线。