zoukankan      html  css  js  c++  java
  • 网络图像加载

    所谓经验,不是指能找到一条通向目标的捷径,而是在通向目标的过程中能够有效避开各种“坑”。谈一谈不借助第三方框架,加载网络图像过程中遇到的各种“坑”。

    应用背景:通过tableView做一个app列表的展示页,其中app的图标需要从网络上获取。

    开始的状态:同步加载网络图片

    问题: 1. 如果网速慢,会给用户非常明显的”卡”的感觉
    2. 每次显示 cell,都会重新加载图片
    解决思路: 使用多线程加载

    问题: 3.tableviewCell需要交互一下才能显示出图片
    解决思路: 使用占位图像,除了能够设置图像,还能够把 imageView 的 frame 给撑开!

    问题: 4.如果图片下载速度不一样,用户又来回滚动cell,可能出现”图片错行”的问题
    解决思路: 不能直接改变视图,给模型中增加一个image的属性,通过模型来控制视图,在图像下载完成之后,刷新指定的行。

    问题: 5.如果某张下载速度非常慢,用户快速来回滚动表格,会造成下载操作会重复创建!
    解决思路: 用字典做一个”下载操作缓冲池”(图片url做key),创建下载操作之前先判断池中有没有已经存在的操作。

    问题: 6.目前图片下载完成之后,是保存在模型中的!如果应用程序运行过程中,出现内存警告需要释放内存的时候,不好释放。
    解决思路: 图片不能保存在模型中,建立图片缓冲池。如果内存警告,直接清空图片缓存即可!

    问题: 7.”下载操作缓冲池”中的内容,在下载完成之后没有删除,造成内存浪费。如果一个下载操作失败,下次刷新的时候不能够重新下载。
    解决思路: 下载完成之后,清除缓冲池!

    问题: 8.创建操作时使用了block,容易引起循环引用的问题
    解决思路: 借助 dealloc 辅助判断,没有出现循环引用。因为下载操作在执行完毕之后会从”下载操作缓冲池”中移除,打破了循环引用。

    项目地址:
    https://github.com/kouliang/ApplicationList

  • 相关阅读:
    NumPy 基本语法汇总
    python自动化操作——excel刷新数据并截图发送微信
    datefram学习(持续更新)
    python——imap邮件自动下载附件和邮件正文
    ERP笔记1系统环境
    ERP笔记2善用SVN对系统环境进行配置和组织
    ERP笔记4SVN目录的权限分配
    ERP笔记3数据库的版本化
    DBCC CHECKCATALOG 错误
    非常棒的放礼花的源程序
  • 原文地址:https://www.cnblogs.com/coderkl/p/4320302.html
Copyright © 2011-2022 走看看