Ios UIImageView逐步加载图像

Ios UIImageView逐步加载图像,ios,uiimageview,uiimage,Ios,Uiimageview,Uiimage,我想要的结果是这样的。当设备从服务器接收数据时,图像会逐渐加载 目前我正在做类似的事情 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [overallData appendData:data]; self.imageView.image = [UIImage imageWithData:overallData]; } 它工作正常,但会消耗所有ram,触发记忆警告,

我想要的结果是这样的。当设备从服务器接收数据时,图像会逐渐加载

目前我正在做类似的事情

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [overallData appendData:data];
    self.imageView.image = [UIImage imageWithData:overallData];
}
它工作正常,但会消耗所有ram,触发
记忆警告
,应用程序有时会崩溃。更不用说每次运行上述代码时都会显示此错误
:ImageIO:JPEG损坏的JPEG数据:数据段过早结束
,但我认为这不是什么大问题


有人对优化有更好的想法吗?否则,我将不得不删除此效果。

我认为您在表视图缩略图中使用了相同的大图像, 您最好将图像下载为NScache中的save data,将图像裁剪为缩略图显示在表视图中,在完整图像视图中不要裁剪,只显示缓存内存中的完整图像


如果在表视图中使用全尺寸图像,应用程序将消耗大量内存

还有一件事,我不确定这是否相关,但我使用的是
ARC
。didReceiveData方法调用了多少次?也许它被调用的次数太多,导致内存警告,看看jpg和png之间的区别,看看哪一个更适合渐进加载(请注意,您不希望渐进加载jpg,渐进加载更高分辨率的版本,而不是像示例中那样的截止版本)该函数被调用大约5次,提高分辨率的加载效果也很好。这并不重要,因为它提供了加载图像的想法。在表视图中,我正在加载缩略图(44x44)并将它们保存到NSCache中。然后,只有当它转到完整图像视图时,它才开始从服务器加载完整大小的图像。因为如果我不确定用户是否会打开全尺寸图像,那么加载它是没有意义的。