2016-04-15 88 views
0

在我的應用程序中,我使用URL下載一些圖像,並將它們放在cell.imageView[indexPath.row](這是一個帶有imageView的自定義單元格)。 我可以同時看到兩個格,我注意到,該方法Cache tableView單元格數據

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> CustomCell { 
} 

這就是所謂的每一個細胞,將顯示時間。所以我的應用程序繼續從服務器下載圖像,而且應用程序結果非常緩慢。

我想知道是否可以緩存我已經看到的單元格的數據,所以如果我在tableView中向上滾動,我不需要重新下載圖像!代碼說話我想打電話給func只有當我向下滾動表格而不是我已經看到的細胞。

回答

1

你可以,但它需要工作的公平一點讓好人在SDWebImage使庫下載/緩存/讀取/管理您的圖片網址,只要將您的圖像獲取的代碼與此類別UIImageview,這給UIImageView.sd_方法。

與細胞落實 prepareForReuse()並取消

還與sd_cancel

1

抓取不要重新發明輪子!
看看NSCache,它像一個可變的字典,但它線程安全。

NSCache對象從其他可變集合在幾個方面有所不同:

的NSCache類整合各種自動刪除策略,這 確保它不使用太多系統內存。如果內存需要 其他應用程序, 系統會自動執行這些策略。在調用時,這些策略會從緩存中刪除一些項目 ,從而最大限度地減少內存佔用量。

您可以從不同的 線程中添加,刪除和查詢緩存中的項目,而無需自行鎖定緩存。

與NSMutableDictionary對象不同,緩存不會複製放入其中的對象 對象。

這些功能對於NSCache類是必需的,因爲緩存可能在 決定在場景 中異步自動變異(如果它被調用以釋放內存)。

您可以使用URL和它們作爲值來鍵入圖像。
Documentation
NSHipster後。