iOS多圖片下載,iOS圖片下載
iOS多圖片下載、在cell裡面下載圖片、做了緩衝最佳化。
(app.icon是圖片地址)
// 先從記憶體緩衝中取出圖片 UIImage *image = self.images[app.icon]; if (image) { // 記憶體中有圖片 cell.imageView.image = image; } else { // 記憶體中沒有圖片 // 獲得Library/Caches檔案夾 NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; // 獲得檔案名稱 NSString *filename = [app.icon lastPathComponent]; // 計算出檔案的全路徑 NSString *file = [cachesPath stringByAppendingPathComponent:filename]; // 載入沙箱的檔案資料 NSData *data = [NSData dataWithContentsOfFile:file]; if (data) { // 直接利用沙箱中圖片 UIImage *image = [UIImage imageWithData:data]; cell.imageView.image = image; // 存到字典中 self.images[app.icon] = image; } else { // 下載圖片 [self.queue addOperationWithBlock:^{ // 下載圖片、多線程 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:app.icon]]; UIImage *image = [UIImage imageWithData:data]; [NSThread sleepForTimeInterval:1.0]; // 回到主線程顯示圖片 [[NSOperationQueue mainQueue] addOperationWithBlock:^{ cell.imageView.image = image; }]; // 存到字典中 self.images[app.icon] = image; // 將圖片檔案資料寫入沙箱中 [data writeToFile:file atomically:YES]; }]; }