如何在推送到另一个控制器时释放collectionViewCell的imageView中的图像内存

时间:2016-08-19 11:34:52

标签: ios uicollectionview uicollectionviewcell

collectionView只是一个图像瀑布,每个图像成本约为200k~2M内存,它可以显示它们虽然不够流畅。 问题是什么?它通过点击一些图像推送到另一个控制器,这个collectionView采取的内存不会释放,但图像的内存让我发疯。

我试过这个

控制器中的

- (void)viewDidDisappear:(BOOL)animated {
  [super viewDidDisappear:animated];
  [self.gifView disAppearReload];
  }

中的

- (void)disAppearReload {
  self.withoutImg = YES;
  [self.collectionView reloadData];
  }
  - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    WaterfallCell *cell = [WaterfallCell cellWithCollentionView:collectionView IndexPath:indexPath];
    cell.delegate = self;
    cell.withoutImg = self.isWithoutImg;
    cell.cellModel = self.cellModels[indexPath.row];
    return cell;
 }
in collectionCell

- (void)setCellModel:(ImageModel *)cellModel {
  _cellModel = cellModel;
  if (self.isWithoutImg) {        
    self.imageBtn.imageView.image = nil;
    }
  else {
    [self.imageBtn sd_setImageWithURL:[NSURL URLWithString:cellModel.imgUrl] forState:UIControlStateNormal placeholderImage:nil options:SDWebImageLowPriority];
    }
 }

它不起作用,不能调用单元代码,但UITableView中的方法相同。帮助~~~

1 个答案:

答案 0 :(得分:0)

使用viewWillappear来调用collectionview的委托和 你可以做的是使用viewDidDisAppear并在那里做你的委托null。