SDWebImage怎么實(shí)現(xiàn)圖片的緩存機(jī)制的?

以tableViewController為例:

  1. 因?yàn)槊看蝐ell需要顯示都需要重新調(diào)用-(UITableViewCell)tableView:(UITableView)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{ }方法
  2. 所以每次調(diào)用tableView顯示行的數(shù)據(jù)源的方法時(shí),如果需要從網(wǎng)絡(luò)加載圖片,就需要將加載圖片的耗時(shí)操作放在子線程上執(zhí)行,從網(wǎng)絡(luò)上下載的圖片可以以鍵值對(duì)的形式保存;在定義可變字典中,將每張圖片的唯一的路徑作為鍵,將從網(wǎng)絡(luò)上下載下來的圖片作為值保存在內(nèi)存緩存中,這樣每次滑動(dòng)tableView cell重用時(shí)就直接判斷內(nèi)存緩存中有沒有需要的圖片;如果有就不需要下載,在沒有出現(xiàn)內(nèi)存警告或者程序員手動(dòng)清理內(nèi)存緩存時(shí),就直接從內(nèi)存緩存中獲取圖片。
  3. 為了每次退出程序,再次進(jìn)入程序時(shí),不浪費(fèi)用戶的流量,需要將第一次進(jìn)入程序時(shí)加載的圖片保存到本地沙盒緩存文件中,在沙盒中保存的圖片數(shù)據(jù)沒有被改動(dòng)之前,下次開啟程序就直接從沙盒的緩存文件中讀取需要的顯示的圖片,并將沙盒緩存文件夾(Cache)中保存的圖片保存到內(nèi)存緩存中,這樣用戶每次滑動(dòng)tableView cell重用時(shí)直接從內(nèi)存緩存中讀取而不是從沙盒中讀取,節(jié)約時(shí)間。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,212評(píng)論 30 472
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,250評(píng)論 4 61
  • tableView加載網(wǎng)絡(luò)圖片 需求的效果圖 數(shù)據(jù)結(jié)構(gòu) 獲取模型數(shù)組 準(zhǔn)備模型 .h文件 .m文件 KVC字典轉(zhuǎn)模...
    月下獨(dú)酌灬閱讀 2,231評(píng)論 4 18
  • 在我們還很小,很小的時(shí)候, 爸媽是我們依賴的港灣, 不離,不舍,不愿遠(yuǎn)行! 在我們長大后,離家的時(shí)候, 爸媽是我們...
    秀秀王子閱讀 354評(píng)論 0 1
  • 1. 現(xiàn)在很多女人都說,寧愿在自行車上笑, 也不愿意在寶馬車上哭!呵呵,我才不會(huì) 讓我的女人哭,畢竟我只有自行車!...
    野生吐槽君閱讀 261評(píng)論 0 1