在后台加载图像

时间:2016-08-27 07:34:10

标签: objective-c uiimage tableview tableviewcell

tableView。它从数组中获取数据(cellMap)。在viewDidLoad中,数据正在添加到数组中。

[self.cellMap addObject:[CellModel initWithTitle:title
                                           price:price
                                           image:getProductImageByImgURL:url
];

在方法cellForRowAtIndexPath中,数据来自数组:

CellModel *model = self.cellMap[indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:configurator.identifier forIndexPath:indexPath];

cell.title = model.title;
cell.price = model.price;
cell.image = model.image;

return cell;

背景图像加载方法:

- (UIImage *)getProductImageByImgURL:(NSString *)url {
     __weak typeof(self)weakSelf = self;
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
         __strong typeof(self)strongSelf = weakSelf;

         strongSelf.productImage = [UIImage loadImage:url];
     });
     return self.productImage;
}

self.productImage@property (strong, nonatomic) UIImage *productImage;

的位置

结果 - 所有单元格都有最后加载的图像。有什么问题?

1 个答案:

答案 0 :(得分:0)

我认为你的问题是由此产生的,

strongSelf.productImage = [UIImage loadImage:url];

您可以尝试使用临时变量。制作它,

UIImage * tempImage = [UIImage loadImage:url];