SDWebImageCache预缓存图像

时间:2015-10-02 18:14:44

标签: ios objective-c iphone sdwebimage

我正在使用SDWebImage插件,我遇到了以下情况:我有两个UIViewController的A和B.在UIViewControllerB我正在加载一系列10 - 15个图像来自UIImageView中的Web,代码如下:

UIImageView *imageView = [[UIImageView alloc] init];
[imageView sd_setImageWithURL:[NSURL URLWithString:[sourceDictionary objectForKey:@"image"]]
                  placeholderImage:[UIImage imageNamed:@"placeholder"]];

这很有效。除非我在用户加载UIViewControllerB后开始下载这些图像。我想知道在用户还在UIViewControllerA时是否有办法让我开始预先缓存或开始下载这些图像,这样当用户到达UIViewControllerB时,他们会看到更短的延迟?如果用户在下载过程中切换到第二个视图控制器,我将如何以一种方式执行此操作以使图像不会被下载两次?

1 个答案:

答案 0 :(得分:1)

可能的解决方法可能是使用Singleton模式实现自定义下载管理器,因此AB都可以使用它。

然后,您可以跟踪请求下载的图像URL列表以及下载完成时要调用的completed处理程序。

首先,检查是否已经没有进行具有相同URL的图像下载,然后将图像添加到列表和已完成的处理程序中,或者只添加新的处理程序。您可以使用字典作为存储,使用URL作为键。

然后,您可以SDWebImageManager方法使用downloadImageWithURLcompleted方法可以从列表中删除图片并触发相应的completed处理程序。

所以在B您知道下载已经完成。您不需要使用SDWebImageCache手动缓存图像,让SDWebImage自动为您执行此操作,因此当您调用完成的方法时,只需执行相同的操作,但由于图像已经已下载SDWebImage将从缓存中获取它。或者,您可以将UIImage下载的completed发送回<?php namespace Kata; class StringCalculator { public function add(string $parameters): int { return 0; } } 处理程序。