1. 网络图片显示大体步骤:

下载图片
图片处理(裁剪,边框等)
写入磁盘
从磁盘读取数据到内核缓冲区
从内核缓冲区复制到用户空间(内存级别拷贝)
解压缩为位图(耗cpu较高)
如果位图数据不是字节对齐的,CoreAnimation会copy一份位图数据并进行字节对齐
CoreAnimation渲染解压缩过的位图
以上4,5,6,7,8步是在UIImageView的setImage时进行的,所以默认在主线程进行(iOS UI操作必须在主线程执行)。

2. 一些优化思路:

异步下载图片
image解压缩放到子线程
使用缓存 (包括内存级别和磁盘级别)
存储解压缩后的图片,避免下次从磁盘加载的时候再次解压缩
减少内存级别的拷贝 (针对第5点和第7点)
良好的接口(比如SDWebImage使用category)
Core Data vs 文件存储
图片预下载

阅读原文 »

2 收藏


直接登录

推荐关注