ASIHttpRequest或者SDWebImage给UIImageView加载图片的逻辑是什么样子的

非常非常喜欢SDWebImage,就算后来AF也做了图片缓存,我也还是一直使用。图片缓存真的是一件令人头疼的事,但是SDWebImage封装了一切,你所需要的只是简单的set一个URL;
1、设置一个展位图(可选择);
2、根据URL去内存中找,找到返回图片
3、内存找不到,硬盘找,找到返回图片,内存做备份
4、硬盘还找不到,去下载,返回图片,并进行存储(硬盘,内存)。

其中有几点技术细节比较重要,
1、图片在内存中是key-value的方式。
2、在硬盘中是data的方式,imageWithData方法获取。
3、key-value方式是url的MD5。
4、注册内存和硬盘通知,如果很吃紧,就删除部分。
很多技术细节,要看源码。

文/natewang(简书作者)
原文链接:http://www.jianshu.com/p/3947ae9c9a18
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-10-12 16:21:45

ASIHttpRequest或者SDWebImage给UIImageView加载图片的逻辑是什么样子的的相关文章

模仿SDWebImage实现异步加载图片

SDWebImage想必大家都不陌生吧,要实现它的图片异步加载功能这个还是很简单的. 注意:此处我只实现了异步加载图片,并没有将文件缓存到本地的打算哦:) 源码: UIImageView+YXImageView.h // // UIImageView+YXImageView.h // PicDemo // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <UIKit/UIKit.h> @interface UIImageV

Android ListView异步加载图片乱序问题,原因分析及解决方案

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是用法比较复杂的了,关键是用法复杂也就算了,它还经常会出现一些稀奇古怪的问题,让人非常头疼.比如说在ListView中加载图片,如果是同步加载图片倒还好,但是一旦使用异步加载图片那么问题就来了,这个问题我相信很多Android开发者都曾经遇到过,就是异步加载图片会出现错位乱序的情况.遇到这个问题时,不

SDWebImage, 关于第三方异步加载图片的一些方法

SDWebImage, 关于第三方异步加载图片的一些方法 1.首先将第三方文件(SDWebImage)添加到工程里 2.修改ARC            3.在viewControl中添加一个imageView, 添加一个tap点击手势, 用来展示下载的图片 a.  sd_setImageWithURL 引入头文件  #import "UIImageView+WebCache.h"  - (IBAction)tap:(UITapGestureRecognizer *)sender {

第三方库SDwebImage加载图片的过程

SDWebImage 加载图片的流程: SDWebImage 支持异步的图片下载+缓存,提供了 UIImageView+WebCacha 的 category,方便使用.纪录一下 SDWebImage 加载图片的流程. 入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片. 进入 SDWebImageManager-downloadWithUR

SDWebImage动画加载图片处理方案

问题 做过开发的都知道,有时候为了让在tableView上面加载的图片显示不突兀,我们需要做渐变动画将它们加载出来,虽然用SDWebImage可以实现从网络加载图片,但是,它没有帮你实现动画加载图片,本教程就是教你实现动画加载图片的处理方案(你也可以用这种方法来进行其他动画的设计,本人只在这里进行抛砖引玉). 效果 源码 https://github.com/YouXianMing/SDWebImageLoadImageAnimation 设计的细节 核心的地方 要用专门的model记录图片是否

002-UIImageView和UIButton对比 UIImageView的帧动画 格式符补充 加载图片两种方式 添加删除SUBVIEW

一>.UIImageView和UIButton对比 显示图片 1> UIImageView只是一种图片(图片默认会填充整个UIImageView)  image\setImage: 2> UIButton能显示2种图片 * 背景 (背景会填充整个UIButton)  setBackgroundImage:forState: * 前置(覆盖在背景上面的图片,按照之前的尺寸显示)  setImage:forState: * 还能显示文字 点击事件 1> UIImageView默认是不能

iOS网络加载图片缓存与SDWebImage

加载网络图片可以说是网络应用中必备的.如果单纯的去下载图片,而不去做多线程.缓存等技术去优化,加载图片时的效果与用户体验就会很差. 一.自己实现加载图片的方法 tips: *iOS中所有网络访问都是异步的.(自己开线程去下载) *普通为模型增加UIImage属性的方法做的是内存缓存(下次启动还需要从网络重新加载), 而要做本地缓存的话,还要自己手动存储网络上下载的图片. *为了加快访问, 还需要自己去弄缓存.(内存缓存或者本地缓存) *当图片没有下载完成时,还要设置占位图片. 以下代码用NSOp

【iOS】网络加载图片缓存与SDWebImage

加载网络图片可以说是网络应用中必备的.如果单纯的去下载图片,而不去做多线程.缓存等技术去优化,加载图片时的效果与用户体验就会很差. 一.自己实现加载图片的方法 tips: *iOS中所有网络访问都是异步的.(自己开线程去下载) *普通为模型增加UIImage属性的方法做的是内存缓存(下次启动还需要从网络重新加载), 而要做本地缓存的话,还要自己手动存储网络上下载的图片. *为了加快访问, 还需要自己去弄缓存.(内存缓存或者本地缓存) *当图片没有下载完成时,还要设置占位图片. 以下代码用NSOp

iOS网络加载图片缓存策略之ASIDownloadCache缓存优化

在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用户体验,为了不是每次显示都需要从网上下载数据,希望将图片放到本地缓存,因此我们需要一个好的的缓存策略,今天我将我在项目工程中的实际经验分享给大家,我这里主要介绍一下强大的ASIHTTPRequest的缓存策略,以及使用方法. AD: 在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用户体验,为了不