图片异步加载 ,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,该项目的功能十分强大,可以说是我见过的目前功能最全.性能最优的图片异步加载解决 ...
随机推荐
- [XMPP]iOS聊天软件学习笔记[一]
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- c# 大数据量比较时-方案
1.当面临千万条数据量的比较时,从技术的角度来说应该用泛型键值(c#键值由于用了散列算法速度很快).例如前几天我需要查的是 航空公司.出发.到达.返点可以将 航空公司-出发-到达做一个键,返点作为值. ...
- BZOJ NOI十连测 第二测 T2
思路:20%可以搜索.. #include<algorithm> #include<cstdio> #include<cmath> #include<cstr ...
- TF卡座(外焊、内焊、掀盖式、全塑、简易)
TF卡座(外焊.内焊.掀盖 式.全塑.简易
- 删除IE缓存中指定的文件
DeleteUrlCacheEntry 1.文件单元:WinInt VC声明 BOOL DeleteUrlCacheEntry ( LPCTSTR lpszUrlName); 函数功能 删除Cache ...
- (转)Java 的swing.GroupLayout布局管理器的使用方法和实例
摘自http://www.cnblogs.com/lionden/archive/2012/12/11/grouplayout.html (转)Java 的swing.GroupLayout布局管理器 ...
- 【转】RTSP流理解
rtsp是使用udp还是tcp,是跟服务器有关,服务器那边说使用udp,那就使用udp,服务器说使用tcp那就使用tcp rtsp客户端的创建: 1.建立TCP socket,绑定服务器ip,用来传送 ...
- poj 2723 Get Luffy Out(2-sat)
Description Ratish is a young man who always dreams of being a hero. One day his friend Luffy was ca ...
- IOS 调用系统发邮件Api
// 判断设备是否有发送邮件功能 NSString *deviceType = [UIDevice currentDevice].model; if([deviceType isEqualToStri ...
- IT人士的职业规范——凝视
这两天将系统敲完了,该总体调试了,调试的过程中,发现了一个非常大的问题,就是自己的凝视写的不够,有时候不明确U层这个事件是做什么的,有时候不知道这个事件传递的是什么參数,有时候不知道相应的B层和 ...