开源框架:SDWebImage

简介: http://blog.csdn.net/uxyheaven/article/details/7909373   SDWebImage是我搞iOS以来少数佩服的框架,膜拜一下作者.真的写的非常棒! 这套开源框架还是蛮重要的, 涉及到异步加载图片源和自动缓存.

http://blog.csdn.net/uxyheaven/article/details/7909373

 

SDWebImage是我搞iOS以来少数佩服的框架,膜拜一下作者.真的写的非常棒!

这套开源框架还是蛮重要的, 涉及到异步加载图片源和自动缓存.

我们如果能够熟练使用其API 就可以实现很多复杂的需求了.

作者依旧在更新,目前3.0 版本已经非常强大! 简化了更多API接口.加强了下载类,支持多个文件同时下载,内置了下载进度功能.等

github托管地址如下:

https://github.com/rs/SDWebImage

SDWebImage API 文档入口(英文的,蛋疼,如果中文的话,估计咱也不写这篇文章了,要么也很短.):

http://hackemist.com/SDWebImage/doc/

 

如果你只是匆匆忙忙下载了一个framework 就回到了自己工程,可能会遇到无法使用的情况:那么下面的文章来解决你遇到的问题:

http://blog.csdn.net/qjlhlh/article/details/8191111

里面提到一句,使用这类代码的时候,最好预先看看Readme(使用说明)

1:引入系统框架 ImageIO.framework.

2:framework 引入头文件的方式如下:

 

[csharp]  view plain copy
 
 
  1. #import<SDWebImage/UIImageView+WebCache.h>  

3:Build Settings->Other Linker Flags->-ObjC or-all_load

以上三部设置之后,就可以开始写代码了.

接下来介绍使用到的各个类库功能说明:

SDWebImageDownloader

这个下载器改版很大,现在里面就一个方法,就是发起前往下载图片的函数:

 

[csharp]  view plain copy
 
 
  1. [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:imageUrl options:SDWebImageDownloaderProgressiveDownload progress:^(NSUInteger receivedSize, long long expectedSize) {  
  2.     NSLog(@"%u %lld",receivedSize,expectedSize);  
  3. } completed:^(UIImage *aImage, NSData *data, NSError *error, BOOL finished) {  
  4.     //self.image = aImage;  
  5.     NSLog(@"成功了:%d",UIImageJPEGRepresentation(aImage, 1).length);  
  6. }];  

 

里面大部分参数属于一看就懂的,进度Block返回的信息有两个参数:1:下载进度. 2:文件大小.

我这里解释一下里面的options枚举的作用

SDWebImageDownloaderOptions

1:SDWebImageDownloaderLowPriority 这个属于默认的使用模式了,前往下载,返回进度Block信息,完成时调用completedBlock

2:SDWebImageDownloaderProgressiveDownload 这个是新版本加的功能,设置后,在返回进度Block的同时,返回completedBlock,里面的UIImage就是当前下载时的图片,可以实现将图片一点点显示出来的功能.

人世间最难的莫过于理解了! 开句玩笑^^

那么SDWebImageDownloader 在新版本的中的分工很明确,只做一件事情,那就是下载,只是下载而已,所以,下载成功以后的图片资源是不会自动缓存的.

如果要缓存,这里需要使用到

SDImageCache

SDImageCacheType 当下载请求结束时,通过这个枚举来告知图片的来源

1:SDImageCacheTypeNone   网络

2:SDImageCacheTypeDisk     设备硬盘

3:SDImageCacheTypeMemory 内存

 

将上面两步骤的需求合并可直接使用

SDWebImageManager

新版本的管理类的改动也相当大,而且就一个方法了,如下:

 

[csharp]  view plain copy
 
 
  1. [[SDWebImageManager sharedManager] downloadWithURL:imageUrl options:SDWebImageLowPriority progress:^(NSUInteger receivedSize, long long expectedSize) {  
  2.     NSLog(@"%u %lld",receivedSize,expectedSize);  
  3. } completed:^(UIImage *aImage, NSError *error, SDImageCacheType cacheType, BOOL finished) {  
  4.     self.image = aImage;  
  5.     NSLog(@"成功了:%d",UIImageJPEGRepresentation(aImage, 1).length);  
  6. }];  


这样发起的下载请求,就会自动缓存图片资源了.

 

那么任何发起的下载请求,都会返回一个代理. 这个写法很神奇,值得深究啊.

也就是:SDWebImageOperation 将这个委托缓存一下,做什么用呢?一件事情,取消下载请求.

 

 

这边文章介绍了整个SDWebImage的运作原理,你看完之后,一定会说:真TMD 的复杂

http://blog.csdn.net/uxyheaven/article/details/7909373

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
11天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
12天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
847 11
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
12天前
|
人工智能 运维 JavaScript
阿里云Qoder CN(原通义灵码)全解析 产品形态、版本划分与技术适配说明
在AI辅助开发与智能办公工具持续普及的当下,阿里云旗下原通义灵码正式更名为Qoder CN,同时延伸出QoderWork CN、Qoder CN CLI、Qoder CN Mobile等多款配套产品,形成覆盖代码开发、日常办公、终端交互、移动端使用的完整工具矩阵。Qoder CN核心定位为AI智能编码助手,深度适配主流代码编辑器、集成开发环境以及终端场景;QoderWork CN则偏向桌面端综合办公辅助,二者面向不同使用场景,划分了多个版本档位,搭配差异化资源配额、功能权限与计费规则,同时兼容多款主流大模型。
865 8
|
12天前
|
存储 安全 Java
AgentScope Java 2.0:打造分布式、企业级智能体底座
AgentScope 2.0 面向分布式部署、稳定运行、权限安全等企业级需求全面升级,打造支持多租户隔离与长期稳定运行的企业级智能体底座。
|
12天前
|
JSON 缓存 安全
通过 CC Switch 本地路由让 Codex CLI 接入 DeepSeek 等第三方模型
CC Switch 通过本地路由(`127.0.0.1:15721`)实现协议转换:将 Codex 的 Responses API 请求自动映射为 DeepSeek 等厂商的 Chat Completions 接口,兼容流式响应与工具调用,无需修改 Codex 源码,安全隔离 API Key。(239字)
2339 6
通过 CC Switch 本地路由让 Codex CLI 接入 DeepSeek 等第三方模型
|
12天前
|
人工智能 弹性计算 安全
阿里云618活动时间、活动入口、优惠活动详细解读
2026年阿里云618创新加速季已全面开启,作为年度力度最大的云产品促销活动,本次大促覆盖轻量应用服务器、ECS云服务器、GPU云服务器、数据库、AI算力、安全服务、CDN等全品类产品,推出5亿元算力补贴、新用户限时秒杀、普惠满减、企业专享、免费试用、云大使返佣等多重福利,个人开发者、中小企业、AI团队均可享受专属低价。本文将系统梳理2026年阿里云618活动的完整时间节点、官方参与入口、各类优惠细则、使用规则、热门产品推荐及实操代码,帮助用户精准参与、高效省钱,以最低成本完成上云部署。
1886 6
|
12天前
|
数据采集 人工智能 前端开发
让 Coding Agent 从黑盒到透明:阿里云 Agent 观测审计数据采集实践
AI Agent 规模化落地带来执行黑盒、行为难追溯、成本难度量三大难题。阿里云基于 OTel 标准,面向 Coding Agent、个人通用助理和框架型 Agent,推出 LoongSuite Pilot、插件及探针等无侵入采集方案,让 Agent 实现可看见、可分析、可审计、可治理。
788 151