您的位置:首页 > 移动开发 > IOS开发

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

2016-06-08 17:24 746 查看
我们在做类似于朋友圈的列表的时候,我们在每个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];
}
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: