• 图像缓冲池


    图像缓冲池

    使用模型缓存图像的问题

    优点

    • 不用重复下载,利用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];
        }
    }];
  • 相关阅读:
    python 打包模块:nuitka
    模型量化
    .Net Core 起步
    adobe flash retired forever
    时间格式(全)
    Python使用chorm对ClickHouse简单查询及写入
    利用iFFT还原的图片有毛刺
    本人Linux常用命令
    Exp8 web综合
    Git 分支管理规范
  • 原文地址:https://www.cnblogs.com/donghaoios/p/5089747.html
Copyright © 2020-2023  润新知