码迷,mamicode.com
首页 > 其他好文 > 详细

图像缓冲池

时间:2015-12-30 19:42:15      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

图像缓冲池

使用模型缓存图像的问题

优点

  • 不用重复下载,利用MVC刷新表格,不会造成数据混乱

缺点

  • 所有下载后的图像,都会记录在模型中
  • 如果模型数据本身很多(2000),单纯图像就会占用很大的内存空间
  • 如果图像和模型绑定的很紧,不容易清理内存

解决办法

  • 使用图像缓存池

图像缓存

  • 缓存属性
///  图像缓冲池
@property (nonatomic, strong) NSMutableDictionary *imageCache;
  • 懒加载
- (NSMutableDictionary *)imageCache {
    if (_imageCache == nil) {
        _imageCache = [[NSMutableDictionary alloc] init];
    }
    return _imageCache;
}
  • 删除模型中的 image 属性
  • 哪里出错改哪里!

断网测试

问题

  • image == nil 时会崩溃=>不能向字典中插入 nil
  • image == nil 时会重复刷新表格,陷入死循环

解决办法

  • 修改主线程回调代码
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
    if (image != nil) {
        // 设置模型中的图像
        [weakSelf.imageCache setObject:image forKey:app.icon];
        // 刷新表格
        [weakSelf.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
    }
}];

图像缓冲池

标签:

原文地址:http://www.cnblogs.com/donghaoios/p/5089747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!