對(duì)于大多數(shù)app來說碱蒙,流量消耗最大的就是圖片的下載挪凑,所以避免圖片重復(fù)下載是程序員需要解決的難題孕索。下邊是我用蘋果原聲方法寫的處理圖片重復(fù)下載的解決方案,如果您有更好的方案躏碳,歡迎交流搞旭。
如果是第一次加載圖片,我們需要用異步線程把圖片下載下來,再把下載好的圖片保存到所在視圖的數(shù)組中菇绵,再保存到app的沙盒里肄渗。
再次進(jìn)入頁面時(shí),首先判斷get的圖片的url時(shí)候和保存到內(nèi)存中的url路徑是否一樣咬最,如果一樣翎嫡,直接顯示在頁面上,如果內(nèi)存中沒有一樣的圖片永乌,再去沙盒里邊比較惑申,如果沙盒里邊也沒有相同的url,那么只能去網(wǎng)上下載铆遭,如果沙盒有硝桩,直接顯示在view上。為什么首先去內(nèi)存中尋找url呢枚荣,因?yàn)閮?nèi)存中的數(shù)據(jù)讀取的最快,可以使圖片最快的顯示在view上啼肩,但是數(shù)組中儲(chǔ)存的數(shù)據(jù)會(huì)隨著view的disappear而消失橄妆,所以此時(shí)要去應(yīng)用的沙盒中讀取。如果沙盒中沒有祈坠,那就是之前并沒有下載過害碾,所以需要下載并且保存,代碼如下:
最后一定要做的一件事就是在didReceiveMemoryWarning的時(shí)候一定要清空數(shù)組中的數(shù)據(jù)赦拘,再清空操作隊(duì)列
[self.imagesDicremoveAllObjects];
[self.queuecancelAllOperations];
用的代碼截圖慌随,代碼就不能復(fù)制了,不是我不想,是因?yàn)楹?jiǎn)書對(duì)于代碼的格式真是太惡心了阁猜,為了我自己看著舒服丸逸,只能用截圖了!