图片异步加载 ,KVO
图片异步下载类目:
.h
#import <UIKit/UIKit.h>
typedef void (^ImageBlock)(UIImage *img);
@interface UIImage (ImageDown)
//第一个参数获得一个url的字符串(图片)
//第二参数 block块是用来将解析出来的image进行第二次赋值
+(UIImage *)imageDownWithUrlString:(NSString *)urlString imageBlock:(ImageBlock)ib;
@end
.m
#import "UIImage+ImageDown.h"
@implementation UIImage (ImageDown)
//实现方法
+(UIImage *)imageDownWithUrlString:(NSString *)urlString imageBlock:(ImageBlock)ib
{
//使用传进来的url字符串转成NSURL
NSURL *url=[NSURL URLWithString:urlString];
//准备请求数据
NSURLRequest *request=[NSURLRequest requestWithURL:url];
//建立连接(get异步请求数据)
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//解析图片,使用解析好的data转换UIImage
UIImage *image=[UIImage imageWithData:data];
//第二次赋值时调用block,并将解析好的image作为参数传入
ib(image);
}];
//因为异步请求线程慢于主线程,提前返回一个占位图片
return [UIImage imageNamed:@"5.jpg"];
}
@end
************************************
KVO
观察者
- (void)viewDidLoad
{
[super viewDidLoad];
[[shearSingleModel shearModel] weaking];
//对shearSingleModel的实例进行KVO(键值观察),观察imageArray的值是否发生变化
//一旦发生变化,更新tableVIew
[[shearSingleModel shearModel]addObserver:self forKeyPath:@"imageArray" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
}
//观察者观察到数据发生变化之后,执行该方法
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
//判断到底是观察者观察到的哪个值发生了改变
if ([keyPath isEqualToString:@"imageArray"]) {
[self.tableView reloadData];
//移除观察者
[[shearSingleModel shearModel]removeObserver:self forKeyPath:@"imageArray"];
}
}
图片异步加载 ,KVO的更多相关文章
- TableView_图片异步加载 KVO
TableView 异步下载图片 ImageDownloader.h #pragma mark - 声明block //1,声明block typedef void(^Result) (UIImage ...
- Android-Universal-Image-Loader 图片异步加载类库的使用
在博客中看到一篇利用组件进行图片异步加载的文章在此作记录 原文:http://blog.csdn.net/vipzjyno1/article/details/23206387 这个图片异步加载并缓存的 ...
- Android图片异步加载框架Android-Universal-Image-Loader
版权声明:本文为博主原创文章,未经博主允许不得转载. Android-Universal-Image-Loader是一个图片异步加载,缓存和显示的框架.这个框架已经被很多开发者所使用,是最常用的几个 ...
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影. 可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚 ...
- Android ListView 图片异步加载和图片内存缓存
开发Android应用经常需要处理图片的加载问题.因为图片一般都是存放在服务器端,需要联网去加载,而这又是一个比较耗时的过程,所以Android中都是通过开启一个异步线程去加载.为了增加用户体验,给用 ...
- Android 图片异步加载的体会,SoftReference已经不再适用
在网络上搜索Android图片异步加载的相关文章,目前大部分提到的解决方案,都是采用Map<String, SoftReference<Drawable>> 这样软引用的 ...
- 【转】Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
Android-Universal-Image-Loader 原文地址:http://blog.csdn.net/vipzjyno1/article/details/23206387 这个图片异步加载 ...
- Android图片异步加载之Android-Universal-Image-Loader
将近一个月没有更新博客了,由于这段时间以来准备毕业论文等各种事务缠身,一直没有时间和精力沉下来继续学习和整理一些东西.最近刚刚恢复到正轨,正好这两天看了下Android上关于图片异步加载的开源项目,就 ...
- Android图片异步加载之Android-Universal-Image-Loader(转)
今天要介绍的是Github上一个使用非常广泛的图片异步加载库Android-Universal-Image-Loader,该项目的功能十分强大,可以说是我见过的目前功能最全.性能最优的图片异步加载解决 ...
随机推荐
- 【6】使用nginx
sudo vim /etc/nginx/nginx.conf user root; worker_processes 2; error_log /var/log/nginx/error.log; pi ...
- Effective Java2读书笔记-创建和销毁对象(四)
第7条:避免使用终结方法 这一条讲的简直是不知所云.先简单记下来其中说出的几条: ①显式终止方法的典型例子有InputStream.OutputStream和java.sql.Connection上的 ...
- poj 1095 Trees Made to Order
http://poj.org/problem?id=1095 先求出n个节点数的二叉树的形态有多少种.卡特兰数f[n]=f[n-1]*(4*n-2)/(n+1);再递归求. #include < ...
- Qt中一些常用的格式转换
转自:http://blog.csdn.NET/yh_1988/article/details/7190356 用Qt经常头痛于一些格式不能通用的问题 在此记录备用 1 (20120112)QStri ...
- SQL Server 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现
原文:SQL Server 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft ...
- SQL Server 2008空间数据应用系列四:基础空间对象与函数应用
原文:SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. ...
- 【MVC4 之 ViewData ViewBag TempData】
ViewData (一个字典集合类型):传入的key必须是string类型,可以保存任意对象信息,特点:它只会存在这次的HTTP的要求中而已,并不像session可以将数据带到下一个Http要求. V ...
- 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
最近用到窗口变化的一些东西,遇到几个相关的消息函数,简要分析,作为备忘. 3个消息分别是:WM_SIZE.WM_SIZING.WM_GETMINMAXINFO:分别对应相应的处理函数:OnSize.O ...
- case then 的用法 貌似case then不支持别名
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER PROC [dbo].[usp_SRV_GetALLRelativeProject]@Service ...
- 安全运维之:Linux系统账户和登录安全
一.合理使用Shell历史命令记录功能 在Linux下可通过history命令查看用户所有的历史操作记录,同时shell命令操作记录默认保存在用户目录下 的.bash_history文件中,通过这个文 ...