2012-01-02 55 views
2

我已经在使用AFNetworking进行异步图像下载。我想知道是否有存储磁盘或核心数据的方法,我应该调查SDWebImage吗?或者你会建议有一个自定义的解决方案。 基本上我想有一个非常透明的方式来从url获取图像,所以首先在NSCache中查找它们,如果找不到,请在磁盘上查找(或核心数据)l如果找不到再下载异步。 感谢您的任何想法iOs上有图像缓存的框架吗?

+0

不完全是一个重复的问题,但在这里相同的答案:http://stackoverflow.com/questions/1130089/lazy-load-images-in-uitableview – 2012-06-25 07:15:15

+0

SDWebImage是非常方便,尤其是随着渐进式图像下载。但是它基于** NSUrlConnection **(即使在最新的3.7.5版本中),我们知道这从iOS 9开始已经被弃用了.NSUrlSession已经存在了3年多了,我认为未来的赢家将是唯一实现NSUrlSession。 ** AFNetworking 3.0 **完全基于NSURLSession。所以我认为Afnetworking比SDWebImage更好的选择。 – 2016-05-07 06:31:51

回答

2

SDWebImage已被证明是一个真正坚实实现异步图像获取和缓存。

如果你正在使用你的网页图像按钮或图像视图,你甚至可以调用-(void)setImageWithURL:(NSURL *)url方法来检查缓存,为你获取图像,如果它不存在,它会异步下载并存储在缓存设置之前。

如果你需要一些其他的东西的图片,你仍然可以从该库通过调用受益:

SDWebImageManager *manager = [SDWebImageManager sharedManager]; 

// Remove in progress downloader from queue 
[manager cancelForDelegate:self]; 

[manager downloadWithURL:yourURL delegate:self options:0]; 

后来就委托方法检索图像:

- (void)webImageManager:(SDWebImageManager *)imageManager didFinishWithImage:(UIImage *)image 
{ 
    // Do something with the image 
} 

注意

- (void)downloadWithURL:(NSURL *)url delegate:(id<SDWebImageManagerDelegate>)delegate options:(SDWebImageOptions)options 

在尝试下载之前没有检查缓存,所以它是s每次你需要一个图像时,都会打电话给你。

+0

SDWebImage基于** NSUrlConnection **,从iOS 9开始已弃用。AFNetworking 3.0使用NSURLSession。我认为现在的选择将是AFNetworking! – 2016-05-07 06:33:01

0

您可以看看EGOImage,它基本上对文件系统上的图像进行异步调用和缓存。