SDWebImage

SDWebImage异步加载图片及缓存的管理与清理 1、在项目的开发过程中,我们经常会用到异步加载图片的功能,先从网络上异步下载图片,然后通过UIImageView显示在屏幕上。这是一个经常使用的功能,基本上所有的联网应用程序都要用到的功能,现在GitHub上已经有非常成熟的框架 SDWebImage(提供异步加载图片、缓存管理,下载进度等,功能最齐全) EGOImageLoading(之前使用的框架,缓存管理不如SDWebImage设计简单) AFNetworking (只提供异步加载图片功能,无缓存管理) 阅读详情

SDWebImage使用——一个可管理远程图片加载的类库

SDWebImage托管在github上。https://github.com/rs/SDWebImage

这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。

将SDWebImage类库添加入工程时,一定注意需要添加MapKit.framework,如图所示,因为MKAnnotationView+WebCache.h依赖该framework。

使用示范的代码:

1.     UITableView使用UIImageView+WebCache类(基本应用,UIImageView的一个category)

前提#import导入UIImageView+WebCache.h文件,然后在tableview的cellForRowAtIndexPath:方法下:

  1. #import "UIImageView+WebCache.h"  
  2.   
  3. ...  
  4.   
  5. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  6. {  
  7.     static NSString *MyIdentifier = @"MyIdentifier";  
  8.   
  9.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];  
  10.   
  11.     if (cell == nil)  
  12.     {  
  13.         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  
  14.                                        reuseIdentifier:MyIdentifier] autorelease];  
  15.     }  
  16.   
  17.     // Here we use the new provided setImageWithURL: method to load the web image  
  18.     [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]  
  19.                    placeholderImage:[UIImage imageNamed:@"placeholder.png"]];  
  20.   
  21.     cell.textLabel.text = @"My Text";  
  22.     return cell;  
  23. }  

基本代码:

  1. [imageView setImageWithURL:[NSURL URLWithString:@<a href="http://www.domain.com/path/image.jpg">http://www.domain.com/path/image.jpg</a>]];  

针对iOS4+目标平台,还可以使用如下块语句:

  1. // Here we use the new provided setImageWithURL: method to load the web image  
  2. [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]  
  3.                placeholderImage:[UIImage imageNamed:@"placeholder.png"]  
  4.                         success:^(UIImage *image) {... success code here ...}  
  5.                         failure:^(NSError *error) {... failure code here ...}];  

2.     使用SDWebImageManager类:可以进行一些异步加载的工作。

  1. SDWebImageManager *manager = [SDWebImageManager sharedManager];  
  2. UIImage *cachedImage = [manager imageWithURL:url]; // 将需要缓存的图片加载进来  
  3. if (cachedImage) {  
  4.       // 如果Cache命中,则直接利用缓存的图片进行有关操作  
  5.       // Use the cached image immediatly  
  6. } else {  
  7.       // 如果Cache没有命中,则去下载指定网络位置的图片,并且给出一个委托方法  
  8.       // Start an async download  
  9.      [manager downloadWithURL:url delegate:self];  
  10. }  

当然你的类要实现SDWebImageManagerDelegate协议,并且要实现协议的webImageManager:didFinishWithImage:方法。

  1. // 当下载完成后,调用回调方法,使下载的图片显示  
  2. - (void)webImageManager:(SDWebImageManager *)imageManager didFinishWithImage:(UIImage *)image {  
  3.     // Do something with the downloaded image  
  4. }  

3.     独立的异步图像下载
可能会单独用到异步图片下载,则一定要用downloaderWithURL:delegate:来建立一个SDWebImageDownloader实例。

  1. downloader =[SDWebImageDownloader downloaderWithURL:url delegate:self];  

这样SDWebImageDownloaderDelegate协议的方法imageDownloader:didFinishWithImage:被调用时下载会立即开始并完成。


4.     独立的异步图像缓存

SDImageCache类提供一个创建空缓存的实例,并用方法imageForKey:来寻找当前缓存。

  1. UIImage*myCachedImage = [[SDImageCache sharedImageCache] imageFromKey:myCacheKey];  

存储一个图像到缓存是使用方法storeImage: forKey:

  1. [[SDImageCachesharedImageCache] storeImage:myImage forKey:myCacheKey];  

默认情况下,图像将被存储在内存缓存和磁盘缓存中。如果仅仅是想内存缓存中,要使用storeImage:forKey:toDisk:方法的第三个参数带一负值
来替代。

SDWebImage内部实现及其原理 SDWebImage的知名度就不用说了,简单介绍一下,它是一个图片框架,支持从网络中下载且缓存图片,并设置图片到对应的UIImageView 控件或者 UIButton 控件。使用SDWebImage来管理图片加载,会极大地提高我们的开发效率,从而让我们更加专注于业务逻辑实现。也正是因为这样,让我们很多开发都只会用SDWebImage,而忽略了它的内部实现,今天我就给大家介绍一下SDWebImage的内部实现及原理。 一、SDWebImage 概述 SDWebImage是一个开源的第三方库,它提供了UII 阅读详情

相关推荐

图片异步加载库SDWebImage

在开发中经常会遇到列表加载的功能,其中大部分都包括图片列表加载,但移动设备本身内存有限,而大量图片加载又很耗内存。这是一个第三方图片异步加载库SDWebImage,Github地址为:https://github.com/rs/SDWebImage,这个库主要实现了为UIImageView添加一个类别方法,让使用者使用图片异步加载就好像直接为UIImageView设置image一样,使用非常方便。

SDWebImage使用——一个可管理远程图片加载的类库

SDWebImage使用——一个可管理远程图片加载的类库 SDWebImage托管在github上。https://github.com/rs/SDWebImage 这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。 将SDWebImage类库添加入工程时,一定注意需要添加MapKit.frame

任海丽(3G/移动开发) 1653

SDWebImage远程图片异步加载

SDWebImage远程图片异步加载, 使用说明:http://www.cnblogs.com/MartinLi841538513/articles/3553059.html

SDWebImage使用,图片加载和缓存

SDWebImage托管在github上。https://github.com/rs/SDWebImage 这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。 使用示范的代码: UITableView使用UIImageView+WebCache类(基本应用,UIImageView的一个category

孙启超 2万+

WinInet 编程:MFC 中的互联网编程

WinInet 是一套 Windows API(应用程序编程接口),用于实现互联网应用程序的网络通信和数据传输。WinInet 抽象了底层网络协议和硬件细节,为程序员提供了一套统一的接口,简化了互联网应用程序的开发过程。WinInet 广泛应用于各种 Windows 应用程序中,包括网页浏览器、下载管理器、网络游戏等。MFC WinInet 是一套强大的类库,为 MFC 程序员提供了在 Windows 平台上实现互联网通信和数据传输的工具。

JAZJD的博客 1636

ROS四旋翼无人机快速上手指南(3):工作环境文件框架与各功能包整体讲解

这一章节主要讲解无人机平台的控制文件架构和各个功能包组成和用法。

The Road of Engineer 2402

SDWebImage 手动安装与集成指南

SDWebImage 手动安装与集成指南 【免费下载链接】SDWebImage 项目地址: https://gitcode.com/gh_mirrors/sdw/SDWebImage ...

gitblog_00124的博客 368

知识图谱本体建模之RDF、RDFS、OWL详解

(一)知识图谱本体建模之RDF、RDFS、OWL详解 1.语义网体系 知识图谱于2012年由Google提出,并不是新概念,而是由语义网络(Semantic Network)衍生而来。语义网络由相互连接的节点和边组成,节点表示概念或者对象,边表示他们之间的关系。RDF,RDFS与OWL都是基于语义网的知识表示框架,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。RDF,RDFS/OWL 属于语义网技术栈,它们的提出,使得语义网克服了语义网络的缺点。其语义网技术栈如下所示。 2.RD

周周的专栏 1万+

iOS学习笔记46——图片异步加载之SDWebImage

在开发中经常会遇到列表加载的功能,其中大部分都包括图片列表加载,但移动设备本身内存有限,而大量图片加载又很耗内存。今天主要就介绍一个第三方图片异步加载库SDWebImage,Github地址为:https://github.com/rs/SDWebImage,这个库主要实现了为UIImageView添加一个类别方法,让使用者使用图片异步加载就好像直接为UIImageView设置image一样,使用...

v5browser 277

Tecplot进阶:巧用公式与多Frame对比,实现CFD多工况数据差异的可视化分析

本文详细介绍了如何利用Tecplot进行CFD多工况数据差异的可视化分析,通过公式计算和多Frame对比,实现变量差值自动计算、多视图同步展示和差异量化统计。文章还提供了数据准备、基础操作、实战技巧和常见问题解决方案,帮助工程师高效完成CFD后处理工作。

weixin_29227425的博客 526

vcpkg管理OpenCASCADE的5个高效技巧:从多版本共存到离线部署

本文详细介绍了使用vcpkg高效管理OpenCASCADE的5个实用技巧,包括多版本共存、性能优化、团队共享、CI/CD集成和离线部署。通过自动配置和版本控制,vcpkg显著简化了OpenCASCADE的开发环境管理,特别适合工业级CAD开发场景。

rain6的博客 187

SDWebImage使用教程

SDWebImage使用教程 【免费下载链接】SDWebImage 项目地址: https://gitcode.com/gh_mirrors/sdw/SDWebImage ...

gitblog_00819的博客 1144

Sigrity OptimizePI Best Capacitor Location Estimation模式如何评估电容最佳位置操作指导

Sigrity OptimizePI Best Capacitor Location Estimation模式用于前仿真分析,评估电容的最佳位置以获得最小回路电感,如何分析,以下图为例进行说明。IC devices,输入U*, A*, B*, Q*, P*,将所有这些字母开头的器件都识别为IC。Min设置为1(最少电容个数为1),max设置为28(最多电容个数为28)Capacitors 输入C*,将所有C开头的器件都识别为电容。Grid X设置为8,Grid Y也设置为8。

weixin_54787054的博客 382

iOS SDWebImage详细介绍

在iOS的图片加载框架中,SDWebImage使用频率非常高。它支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButton控件。在项目中使用SDWebImage来管理图片加载相关操作可以极大地提高开发效率,让我们更加专注于业务逻辑实现。本文讲解的版本为4.4.2版本。 一、SDWebImage 概论 SDWebImage是个支持异步下载与缓存的UIImageView扩展。项目主要提供了一下功能: 1.提供了一个UIImageView的category用来加载网络图片并且对

假装你是大灰狼的专栏 3832

【WRFDA教程】客观分析(OBSGRID)详解

客观分析(OBSGRID)详解

WW、forever的博客 1133

【机器视觉】基于深度学习的托盘PCB识别与计数(有无、正反)

工业机器视觉是指在制造业和工业环境中使用计算机视觉技术来执行检测、测量、识别和控制任务。它结合了硬件(如相机、镜头、光源)与软件(图像处理算法)来自动完成传统上需要人工视觉的任务,从而提高生产效率、产品质量以及工作安全性。工业机器视觉系统通常具有高精度、高速度和高可靠性,能够适应恶劣的工作环境。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

iOS——SDWebImage解读

前言 在iOS的图片加载框架中,SDWebImage占据了大半壁江山。它提供了UIImageView的一个分类,支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButton控件。在项目中使用SDWebImage来管理图片加载相关操作可以极大地提高开发效率,让我们更加专注于业务逻辑实现。 SDWebImage功能 功能特性 一个添加了web图片加载和缓存管理的UIImageView分类 一个异步的图片加载器 一个异步的内存加磁盘综合存储图片并且自动处理过期图片 支持GIF(4

LANGJ1的博客 3816

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SDWebImage如何避免复用

写在最前面大家都很忙, 如果你没时间看下面一长串的文字, 这里我尽量长话短说, 希望能节约一些你的时间前提知识 1 每一个UIView+WebCache 都有一个operationDictionary 里面装的是 @{你当前的类名 : Operation}. 2 Operation直接影响图片能否被显示.每次有新的加载任务时都会检查这个字典, key相同则移除Operation, 再添加新

sun island的博客 3786

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SDWebImage 开源项目教程

SDWebImage 开源项目教程 【免费下载链接】SDWebImage 项目地址: https://gitcode.com/gh_mirrors/sdw/SDWebImage ...

gitblog_00462的博客 969

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SDWebImage/SDWebImage

Features Categories for UIImageView, UIButton, MKAnnotationView adding web image and cache management An asynchronous image downloader An asynchronous memory + disk image caching with automatic cache expiration handling A background image decompression to

的博客 855

SDWebImage的使用以及原理介绍

在iOS的图片加载框架中,SDWebImage可谓是占据大半壁江山。它支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButton控件。在项目中使用SDWebImage来管理图片加载相关操作可以极大地提高开发效率,让我们更加专注于业务逻辑实现。 SDWebImage 概论 1.提供了一个UIImageView的category用来加载网络图片并且对网络图

larry 1万+

【iOS】SDWebImage源码学习

SDWebImage是一个开源的第三方库,它提供了UIImageView的一个分类,以支持从远程服务器下载并缓存图片的功能。一个异步的图片加载器。一个异步的内存+磁盘图片缓存支持GIF、WebP图片后台图片解压缩处理确保同一个URL的图片不被多次下载确保非法的URL不会被反复加载确保下载及缓存时,主线程不被阻塞.首先我们先看一下有关于SDWebImage官方给出的一个图:下面我们主要讲一下这几个比较重要的对象。

qq_73106050的博客 1164

【iOS】SDWebImage

在写知乎日报项目时,遇到了图片加载和通过API异步加载图片的问题,在组内成员的引导下,去学习了SDWebImage开源库。

2301_80467753的博客 1421

CocoPods安装SDWebImage

github挂载地址:https://github.com/rs/SDWebImage Installation with CocoaPods CocoaPods is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party l

Vic 4685

SDWebImage框架使用方法

http异步加载图片——SDWebImage使用方法 关于iOS上http异步图片加载的工具,在网上看到两个被推荐的开源工具。一个是EGOImageLoader,另一个是SDWebImage,两种工具都自带缓存机制,非常适用于我们这个应用,省去了定期清理本地图片的麻烦。 我分别将两种工具加到了新闻摘要列表中,查看效果,最终选定了SDWebImage。 两种工具的对比如下: 1、显示效率

sifengjin的专栏 2741

IOS学习——SDWebImage配置及使用

1.SDWebImage安装配置一 下载SDWebImage:https://github.com/rs/SDWebImage Installation There are two ways to use this in your project: copy all the files into your project, or import the project as a

blue_jjw的专栏 9559
上一篇: iOS内存泄露查处
下一篇: ios 新浪微博分享
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值