【发布时间】:2011-05-04 04:48:12
【问题描述】:
一直在寻找这个问题的解决方案已经无休止的几个小时了。问题真的很简单。我在笔尖中有一个UIImageView,我正在从互联网加载图像并使用图像设置UIIImageView。我正在发布 viewController。 Dealloc 实际上被调用(!)并再次加载 viewController 和图像。这可以通过非常容易地进入后台模式来完成。 Instrument Leaks 没有报告任何泄漏,但它在分配中显示它将图像保留在内存中并且不断增长。
基本示例:
-(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?
编辑:当我写这个例子的时候,我有点过分了。现在的例子是正确的。我也尝试过使用自动释放的对象,并且仍然存在相同的“泄漏”。如果您要写答案,请回答问题。
【问题讨论】:
标签: iphone objective-c ios4 ipad