因爲UIImage的imageWithData函數是每次畫圖的時候纔將Data解壓成ARGB的圖像,緩存
因此在每次畫圖的時候,會有一個解壓操做,這樣效率很低,可是隻有瞬時的內存需求。函數
爲了提升效率經過SDWebImageDecoder將包裝在Data下的資源解壓,而後畫在另一張圖片上,這樣這張新圖片就再也不須要重複解壓了。線程
這種作法是典型的空間換時間的作法。code
首先NSURLCache是緩存原始數據(raw data)到磁盤或內存,所以每次使用的時候須要將原始數據轉換成具體的對象,如UIImage等,這會致使額外的數據解析以及內存佔用等,而SDWebImage則是緩存UIImage對象在內存,緩存在NSCache中,同時直接保存壓縮過的圖片到磁盤中;還有一個問題是當你第一次在UIImageView中使用image對象的時候,圖片的解碼是在主線程中運行的!而SDWebImage會強制將解碼操做放到子線程中。對象
以上記錄下來備忘 還不是很理解怎麼回事圖片