使用SDWebImage下载大图像时应用程序崩溃

时间:2016-04-07 06:39:52

标签: ios objective-c memory-management sdwebimage

我使用SDWebImage从服务器下载图像异步。服务器上的一些图像大小(1772x1476像素。)我在UICollectionView上显示这些图像。我在几次运行后得到了内存警告和应用程序崩溃。有时它会在第一次下载图像时出现,有时会在我上下滚动集合视图时发生。这是我的代码 -

我在x代码上收到警告,如下面的图片

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

    UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];

[Mainimage sd_setImageWithURL:[NSURL URLWithString: Obj.imageYH] placeholderImage:[UIImage imageNamed:@""]];

   return cell;
}

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以使用:

[SDImageCache sharedImageCache] .config.shouldDecompressImages = NO; [[SDWebImageDownloader sharedDownloader] setShouldDecompressImages:NO];

版本4.0-beta

答案 1 :(得分:0)

如果您的应用不需要显示完整尺寸的图片,那么将其缩小然后展示始终是一个好习惯。这是一个做什么的例子。

SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadWithURL:url delegate:self options:0 success:^(UIImage *image) 
{
    //Scale down the image here and then set to your view.
}

它可以帮助您减少内存问题。

答案 2 :(得分:0)

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

            UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];

    [Mainimage setImageWithURL:[NSURL URLWithString: Obj.imageYH] placeholderImage:[UIImage imageNamed:@""]];

           return cell; 
}        

试试这个