以tableViewController為例:
- 因?yàn)槊看蝐ell需要顯示都需要重新調(diào)用-(UITableViewCell)tableView:(UITableView)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{ }方法
- 所以每次調(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)存緩存中獲取圖片。
- 為了每次退出程序,再次進(jìn)入程序時(shí),不浪費(fèi)用戶的流量,需要將第一次進(jìn)入程序時(shí)加載的圖片保存到本地沙盒緩存文件中,在沙盒中保存的圖片數(shù)據(jù)沒有被改動(dòng)之前,下次開啟程序就直接從沙盒的緩存文件中讀取需要的顯示的圖片,并將沙盒緩存文件夾(Cache)中保存的圖片保存到內(nèi)存緩存中,這樣用戶每次滑動(dòng)tableView cell重用時(shí)直接從內(nèi)存緩存中讀取而不是從沙盒中讀取,節(jié)約時(shí)間。