图片异步下载类目:
.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,该项目的功能十分强大,可以说是我见过的目前功能最全.性能最优的图片异步加载解决 ...
随机推荐
-
PHP的学习--cookie和session
最近读了一点<PHP核心技术与最佳实践>,看了cookie和session,有所收获,结合之前的认识参考了几篇博客,总结一下-- 1. PHP的COOKIE cookie 是一种在远程浏览 ...
-
busybox filesystem matrix-gui-2.0 undefined function json_encode()
/******************************************************************************** * matrix-gui-2.0 u ...
-
[iOS 开发]UITableView第一行显示不完全
造成这个问题的原因可能有两个: 1. UITableView的contentOffset属性的改变: 2. MJRefresh调用两次headerEndRefreshing会造成刷新后UITableV ...
-
codeforces 650D. Zip-line 线段树
题目链接 题目的意思很简单, 就是给你n个数, m个询问, 每次询问修改某一个位置的值, 然后问你修改完之后数列的lis是多少. 询问独立. 对于原数列, 我们将它离散化, 令dp1[i]为以i为结尾 ...
-
RPi&#160;WiringPi安装使用
sudo apt-get install git-core git clone git://git.drogon.net/wiringPi cd wiringPi ./build 使用Exam ...
-
Android-第三天
今天开始做一个提交的页面,本来是用LinearLayout,但是这种布局要使用到多组LinearLayout,于是采用表格布局+相对布局的方式. <TableLayout> <Tab ...
-
集合源码分析[2]-AbstractList 源码分析
AbstractList 类型:抽象类 接口的继承以及实现关系 继承AbstractCollection 实现List接口 典型方法实现解析 public List<E> subList( ...
-
Python语法进阶
1.变量进阶 2.局部变量.全局变量 3.函数进阶 4.函数进阶
-
python_Tkinter
Tkinter相关 python支持多种图形界面的第三方库,包括:TKwxWidgetsQTGTK等等但是python自带的库是支持TK的TKinter,使用使用Tkinter,无需安装任何包,就可以 ...
-
联想Y700安装显卡驱动和CUDA8.0
一显卡驱动安装 1 安装驱动安装软件 2 自动检测下载对应版本驱动 3下载完成后,点击开始,解压出来临时安装文件 由于是临时安装文件,退出就会关闭 4所以在没有关闭情况下,打开重新打开一次setup, ...