2013-02-25 37 views
0

我已经开始编写图像库从网上下载图像。有一次,我下载了一张图像,并将其设置在图像字典中(我确保此字典中的图像数量不超过某个阈值数量,以避免内存使用量过多,因此在需要时删除图像)。之后,我使用方法NSData将该图像写入文件。 当请求图像时,我首先检查它是否存在于字典中,如果不存在,如果文件存在于使用[[NSFileManager defaultManager] fileExistsAtPath: uniquePath]的路径中。如果它不在那里,我下载图像。所有这些都发生在设置为高优先级全局队列的异步队列中。但是,整个过程似乎仍然有点迟缓。可以在全局队列中异步使用磁盘读取和写入方法吗?另外,在这种情况下推荐使用磁盘缓存吗?如果我只在从内存条件低的字典中转储图像时才提交文件写入,它会加快速度吗?将下载的图像缓存到磁盘

+0

你如何下载图像从URL数据?通过使用异步URL连接或其他东西? – Exploring 2013-02-25 11:17:08

+0

你可能会对这个库感兴趣 - > https://github.com/nicklockwood/AsyncImageView – borrrden 2013-02-25 11:19:31

+0

我正在使用[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageURLString]]]。但是这在全局队列中异步发生。 – 2013-02-25 11:40:39

回答

0

缓存在SDWebImage Framework中变得容易。它默认支持缓存。

+0

是的...我知道SDWebImage,我从来没有使用过它,我只使用了EGOImageView,并且它支持缓存。但是,我正在写自己的图书馆,只是为了学习的目的。 – 2013-02-25 11:41:51

0

缓存东西最简单的方法就是使用苹果自己的NSURLCache。刚才看了这个链接:http://nshipster.com/nsurlcache/

基本上你需要把它添加到您applicationDidFinishLaunching...

let URLCache = NSURLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024, diskPath: nil) 
NSURLCache.setSharedURLCache(URLCache)