使用ASIHTTP,下面的代码位于ImageDownloader类中。我得到了内存泄漏,这是在底部添加的,但我不知道为什么。我以为tempImage会在没有做任何事情的情况下自动释放?
- (void)requestFinished:(ASIHTTPRequest *)request
{
UIImage *tempImage = [UIImage imageWithData:[request responseData]];
if (tempImage.size.width > 250.0f && tempImage.size.height > 180.0f)
{
self.image = tempImage;
self.circleImage = [UIImage imageNamed:@"hover.png"];
if ([self.delegate respondsToSelector:@selector(addImageToModel:)])
[self.delegate addImageToModel:self];
}
else
{
if ([self.delegate respondsToSelector:@selector(badImage)])
[self.delegate badImage];
}
tempImage = nil;
}
答案 0 :(得分:1)
self.image设置为tempImage,因此它可能会保留图像。它是在任何地方发布的吗?
答案 1 :(得分:0)
你不应该写这一行:
tempImage = nil;
由于tempImage是一个函数范围变量,因此它将自行处理。 此外,如果self.image是(非原子的,分配)可能是你的泄漏的起源。
关于堆栈跟踪图像,这是来自泄漏仪器还是记忆仪器?
不幸的是,在您提供更多代码之前,我们将无法为您提供更多帮助。
答案 2 :(得分:0)
正如托马斯所说,它可能是自我保留图像的形象?
你考虑过唤醒僵尸吗? ;)
http://www.mikeash.com/pyblog/friday-qa-2011-05-20-the-inner-life-of-zombies.html