SDWebImage 中為 UIImageView 提供了一個分類UIImageView+WebCache.h, 這個分類中有一個最常用的接口sd_setImageWithURL:placeholderImage:,會在真實圖片出現前會先顯示占位圖片,當真實圖片被加載出來后再替換占位圖片。
加載圖片的過程大致如下:
- 首先會在 SDWebImageCache 中尋找圖片是否有對應的緩存, 它會以url 作為數據的索引先在內存中尋找是否有對應的緩存
- 如果緩存未找到就會利用通過MD5處理過的key來繼續在磁盤中查詢對應的數據, 如果找到了, 就會把磁盤中的數據加載到內存中,并將圖片顯示出來
- 如果在內存和磁盤緩存中都沒有找到,就會向遠程服務器發送請求,開始下載圖片
- 下載后的圖片會加入緩存中,并寫入磁盤中
- 整個獲取圖片的過程都是在子線程中執行,獲取到圖片后回到主線程將圖片顯示出來
SDWebImage原理:
調用類別的方法:
- 從內存(字典)中找圖片(當這個圖片在本次使用程序的過程中已經被加載過),找到直接使用。
- 從沙盒中找(當這個圖片在之前使用程序的過程中被加載過),找到使用,緩存到內存中。
- 從網絡上獲取,使用,緩存到內存,緩存到沙盒。
更多:iOS面試題合集