现在无休止的时间一直在寻找解决这个问题的方法。问题很简单。我在笔尖有一个UIImageView
,我正在从网上加载一张图片,并将图片设置为UIIImageView
。我释放viewController。 Dealloc实际上正在调用(!)并再次加载viewController和图像。这可以通过非常容易地进入背景模式来完成。仪器泄漏不报告任何泄漏,但它表明它在分配中保持图像在内存中并且保持增长。UIImageView setImage泄漏?
基本例如:
-(id)init {
if((self = [super init])) {
id path = [NSString stringWithFormat:@"http://www.aSite.com/largeImage.jpg"];
NSData* urlData = [[NSData alloc] initWithContentsOfURL:url];
UIImage* img = [[UIImage alloc] initWithData:urlData];
[background setImage:img];
[urlData release];
[img release];
}
return self;
}
-(void)dealloc {
[background release];
[super dealloc];
}
有人说实际上的UIImageView泄漏,或实际CGImage。有些人说乐器显示不正确。我在用2.5mb大图片做10-15次后得到了内存警告。结果来自实际设备和最新的iOS(或至少4-5周前)。由于UIImageView被很多人使用,我认为它很容易找到问题或从苹果获得修复?
来源CGImage泄漏的: (iphone) UIImageView setImage: leaks?
编辑:我是升技tierd当我写的例子。示例现在正确。我也尝试过使用自动释放对象,同样的“泄漏”仍然存在。如果你要写答案,请回答问题。
与问题无关。另外[[UIImage alloc] initWithData:urlData]保留了NSData,因此在[backgroundsetImage:img]之前释放它是可以的...... – David 2011-05-04 05:31:41