iOS-tableview SDWebImage加载多张图片内存警告(received memory warning)

我们在做类似于朋友圈的列表的时候,我们在每个cell上加载多张图片的时候,我们快速的滚动列表,会收到内存警告,并且会出现闪退的状况;

我做了下面的操作解决了问题;

1.加载小的缩略图;

现在很多公司的图片服务器选择第三方的,比如阿里云,七牛等等,他们都有自己方法来获取缩略图,当然你们公司如果有自己的服务器,也可以自己做缩略图;

例如,以七牛为例

原图URL:http://7xpx8n.com1.z0.glb.clouddn.com/media_album_45666666_2016_05_24_14_15_06_144_8123.jpg

缩略图URL:http://7xpx8n.com1.z0.glb.clouddn.com/media_album_45666666_2016_05_24_14_15_06_144_8123.jpg?imageView2/1/w/200/h/200

2.在用户正在进行用户操作的时候,SDWebImage停止下载图片

//SDWebImageRetryFailed :下载失败后,会重新下载
//SDWebImageLowPriority :在用户正在进行用户操作的时候,SDWebImage停止下载图片
SDWebImageOptions options = SDWebImageRetryFailed | SDWebImageLowPriority;
NSString *uelStr = [NSString stringWithFormat:@"%@?imageView2/1/w/%.0f/h/%.0f",dict[@"url"],imageWidth,imageWidth];
[imageview sd_setImageWithURL:[NSURL URLWithString:uelStr] placeholderImage:[UIImage imageNamed:@"ZH_默认图片.jpg"] options:options completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
                imageview.contentMode = UIViewContentModeScaleAspectFill;
            }];</span>

3.内存处理,我们在收到内存警告的时候,取消下载,清除缓存

在AppDelegate里面写

#pragma mark - 收到内存警告
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application{
    NSLog(@"内存警告了⚠️⚠️⚠️⚠️⚠️⚠️⚠️");
    SDWebImageManager *mgr = [SDWebImageManager sharedManager];
    [mgr cancelAll];
    [mgr.imageCache clearMemory];
}

 

 

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!
技术狗 » iOS-tableview SDWebImage加载多张图片内存警告(received memory warning)