1. 程式人生 > >【iOS】利用cell的重用機制取消圖片非同步下載

【iOS】利用cell的重用機制取消圖片非同步下載

在專案中,我們會進行非同步的網路下載圖片把它載入UITableViewCell中上,一般情況下在我們會在cellForRow方法裡面設定cell的圖片資料來源(非同步進行網路下載圖片),也就是說如果一個cell的UIImageview物件開啟了一個下載任務,這個時候該cell物件發生了重用(reuse),新的image資料來源會開啟另外的一個下載任務,由於他們關聯的UIImageview物件實際上是同一個cell例項的UIImageview物件,就會發生2個下載任務回撥給同一個UIImageview物件。這個時候就有必要做一些處理,避免回調發生時,錯誤的image資料來源重新整理了UI。

所以在我們向下滑動UITableview的時候我們需要手動去取消(cancel)掉下載操作,當用戶停止滑動,再去執行下載操作。

具體思路如下:我們可以利用cell的重用機制,當cell被重用了,取消下載。

//當前已經被分配的cell如果被重用了(通常是滾動出螢幕外了)
- (void)prepareForReuse {
    [super prepareForReuse];
    //在下面寫取消下載的操作。
    [self.XXXImageView sd_cancelCurrentImageLoad];//如果用了SDWebImageDownloaderOperation,就取消這個SDWebImageDownloaderOperation。
}