图片异步下载类目:

.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的更多相关文章

  1. TableView_图片异步加载 KVO

    TableView 异步下载图片 ImageDownloader.h #pragma mark - 声明block //1,声明block typedef void(^Result) (UIImage ...

  2. Android-Universal-Image-Loader 图片异步加载类库的使用

    在博客中看到一篇利用组件进行图片异步加载的文章在此作记录 原文:http://blog.csdn.net/vipzjyno1/article/details/23206387 这个图片异步加载并缓存的 ...

  3. Android图片异步加载框架Android-Universal-Image-Loader

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android-Universal-Image-Loader是一个图片异步加载,缓存和显示的框架.这个框架已经被很多开发者所使用,是最常用的几个 ...

  4. Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)

    这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影. 可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚 ...

  5. Android ListView 图片异步加载和图片内存缓存

    开发Android应用经常需要处理图片的加载问题.因为图片一般都是存放在服务器端,需要联网去加载,而这又是一个比较耗时的过程,所以Android中都是通过开启一个异步线程去加载.为了增加用户体验,给用 ...

  6. Android 图片异步加载的体会,SoftReference已经不再适用

      在网络上搜索Android图片异步加载的相关文章,目前大部分提到的解决方案,都是采用Map<String, SoftReference<Drawable>>  这样软引用的 ...

  7. 【转】Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)

    Android-Universal-Image-Loader 原文地址:http://blog.csdn.net/vipzjyno1/article/details/23206387 这个图片异步加载 ...

  8. Android图片异步加载之Android-Universal-Image-Loader

    将近一个月没有更新博客了,由于这段时间以来准备毕业论文等各种事务缠身,一直没有时间和精力沉下来继续学习和整理一些东西.最近刚刚恢复到正轨,正好这两天看了下Android上关于图片异步加载的开源项目,就 ...

  9. Android图片异步加载之Android-Universal-Image-Loader(转)

    今天要介绍的是Github上一个使用非常广泛的图片异步加载库Android-Universal-Image-Loader,该项目的功能十分强大,可以说是我见过的目前功能最全.性能最优的图片异步加载解决 ...

随机推荐

  1. [C++程序设计]有关形参与实参,及返回值说明

    有关形参与实参的说明:(1) 在定义函数时指定的形参,在未出现函数调用 时,它们并不占内存中的存储单元,因此称它们是 形式参数或虚拟参数,表示它们并不是实际存在的数据,只有在发生函数调用时,函数max ...

  2. [转]如何正确设置nginx中remote_addr和x_forwarded_for参数

    做网站时经常会用到remote_addr和x_forwarded_for这两个头信息来获取客户端的IP,然而当有反向代理或者CDN的情况下,这两个值就不够准确了,需要调整一些配置. 什么是remote ...

  3. Hdu1090

    #include <stdio.h> int main() { int i,T,a,b; scanf("%d",&T); ;i<T;i++){ scanf ...

  4. Spring3.0.5 获取表中自增的主键(mysql)

    public int addWsstxCotent(final WsstxContent wsstxContent) { final String sql = "insert into ws ...

  5. Redis应用场景-整理

    1.  MySql+Memcached架构的问题 Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现. ...

  6. 【转】Android下编译jni库的二种方法(含示例) -- 不错

    原文网址:http://blog.sina.com.cn/s/blog_3e3fcadd01011384.html 总结如下:两种方法是:1)使用Android源码中的Make系统2)使用NDK(从N ...

  7. 2014.8.4我出的模拟赛【NTR酋长】

    NTR酋长 (ntr.pas/.c/.cpp) 黄巨大终于如愿以偿的进入了czy的后宫中……但是czy很生气……他要在黄巨大走到他面前的必经之路上放上几个NTR酋长来阻挡黄巨大. 众所周知,NTR酋长 ...

  8. c语言中内存对齐问题

    在最近的项目中,我们涉及到了“内存对齐”技术.对于大部分程序员来说,“内存对齐”对他们来说都应该是“透明的”.“内存对齐”应该是编译器的“管辖范围”.编译器为程序中的每个“数据单元”安排在适当的位置上 ...

  9. Number of Containers(数学) 分类: 数学 2015-07-07 23:42 1人阅读 评论(0) 收藏

    Number of Containers Time Limit: 1 Second Memory Limit: 32768 KB For two integers m and k, k is said ...

  10. redhat6.3 64位更新源(使用网易源)全过程记录

    本篇博客参考:http://chinaxiaoyu.diandian.com/post/2013-01-24/40046529897.首先在浏览器中输入http://tel.mirrors.163.c ...