2013-02-25 70 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)