【发布时间】:2014-06-01 10:39:52
【问题描述】:
我有一个很奇怪的问题。我有一个scrollView,我在其中加载了从网络上获取的图像。它在iPad上运行良好,内存稳定且低,一个35MB。
我只加载相关图像的每个页面,并通过设置 UIImageView=nil 删除其余页面。
当我加载到滚动器中的图像不是来自网络,而是从磁盘预加载时,问题就开始了,只要我滚动更多,内存就会从 30 上升到 200。似乎当图片不是来自网络(离线模式),他不会发布图片,但是当它在线模式时,一切正常。
这是我如何离线或在线检查以将图像加载到滚动条:
//this method gets: or image url string(online), or UIImage(offline).
[self.imageOperationQueue addOperationWithBlock:^
{
UIImage *image ;
if(!isOffLineMode)
image=[UIImage imageWithData:[NSData dataWithContentsOfURL:userUrl] scale:1.0];
else
image=[dic objectForKey:@"userImage"];
if (image)
{
UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);
[image drawAtPoint:CGPointZero];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
if (image != nil)
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^
{
UIImageView *view=thisCell.userImage;
view.image=nil;
view.image=image;
}];
image=nil;
}
}];
在这两种情况下,我都会使用imageview.image=nil; 清除图像。
问题仅在离线模式下出现。
【问题讨论】:
-
在离线模式下,你有
dict,这是保留所有图像吗? -
@Paul.s 就像这样:NSDictionary *dic=[mainData objectAtIndex:index];其中主要数据包含所有图像,而 dic 仅包含 1 个图像。但是,我用 dic=nil; 清除块末尾的 dic; ..
标签: ios objective-c uiimageview