做项目的时候,发现后台给的图片都是特别高清的,导致我的只要下拉加载几次就会频繁的收到内存警告,现在总结一下处理方法:
1.如果使用了SDWebImage框架,使用如下代码,可以有效的减少内存:
[[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];//清除内存中通过SDWebImage框架下载的图片,建议在收到内存警告时在调用
2.让后台把图片压缩,根据参数不同,获取到不同大小的图片,常用的话,最好写成宏定义,例如:
/**200*200的正方形缩略图,适用于头像等方的图*/
#define URLAppendAvatar(url) [url stringByAppendingString:@"!thumb.avatar"]
/**等比例缩小,限定最长边600,短边自适应,适用于列表页*/
#define URLAppendCommon(url) [url stringByAppendingString:@"!thumb.common"]
3.加载图片时,根据具体情况,选择不同的方法:
imageNamed: 加载时会缓存图片,当图片会频繁的使用时,使用imageNamed
imageWithContentsOfFile:仅加载图片,不会缓存,当图片不经常使用或者图片过大时,使用imageWithContentOfFile
4.在收到内存警告时,调用以下代码:
if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.0) {
if (self.isViewLoaded && !self.view.window){
//释放其他可复现的资源&&保存数据
self.view = nil;//目的是再次进入时能够重新加载调用viewDidLoad函数。
}
}
关于收到内存警告的具体原理,请参考这篇博客:http://blog.csdn.net/jeffasd/article/details/51066736
网友评论