数据下载-block 形式的异步请求

这里给大家写了一个方法 ,我们使用block 进行数据异步下载
//block 形式的异步请求
-(void)asyncDownloadWithBlock{
    //菊花
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    //将字符串转化成URL 地址
    NSURL *url = [NSURL URLWithString:self.myURLStr];

    //创建一个对象
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    //获取主队列
    NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];

    NSLog(@"current:%@",[NSThread currentThread]);
    NSLog(@"isMulti:%d",[NSThread isMultiThreaded]);
    NSLog(@"开始下载");
    [NSURLConnection sendAsynchronousRequest:request queue:mainQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        NSLog(@"block 回调,下载完成");
        NSLog(@"current:%@",[NSThread currentThread]);
        NSLog(@"%d",[NSThread isMultiThreaded]);

        //取消菊花
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

        NSLog(@"%@",response);
        NSHTTPURLResponse *httpRespone = (NSHTTPURLResponse *)response;

        //状态码
        if (httpRespone.statusCode != 200) {
            NSLog(@"下载出错");

        }
        if (data && !connectionError) {//这里注意判断 数据存在且 连接没有错误
            self.imageView.image = [UIImage imageWithData:data];

        }
        else{
            NSLog(@"下载出错");
        }

    }];
    NSLog(@"current:%@",[NSThread currentThread]);
    NSLog(@"isMulti:%d",[NSThread isMultiThreaded]);
    NSLog(@"************");

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-12 03:48:18

数据下载-block 形式的异步请求的相关文章

数据下载 - delegate 形式的异步请求

下载数据可以使用同步请求,异步请求 之前有讲到NSString . NSData 类型的同步请求 有NSURLConnection 形式的同步请求 异步请求有block 形式的异步请求,我们需要创建一个队列 在block 内部实现 但是我们最常用的是 delegate 形式的异步请求 #import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDelegate> @property(n

Block学习一:基本用法,用block封装NSURLRequest异步请求

首先看下面这段代码: void (^myFirstBlock)(int theOne,int theTwo) = ^(int theOne,int theTwo){ NSLog(@"====%d",theOne+theTwo); }; myFirstBlock(100,300); void:指的时返回数据类型,myFirstBlock:指的是block的名称,后面两个是参数.等号右边的block的实现. 个人理解:block本身就是一个类,他的实例化就是一个对象,下面看看这个数据请求的

Springmvc中 同步/异步请求参数的传递以及数据的返回

注意: 这里的返回就是返回到jsp页面 **** controller接收前台数据的方式,以及将处理后的model 传向前台***** 1.前台传递数据的接受:传的属性名和javabean的属性相同 (1).使用基本类型,或引用类型进行接受: @RequestMapping(value="/select") PublicString  select(String name,int age,Model model){ // 这样这里的name,age 就是我们前台传递的参数,也是我们Ja

ajax,同步请求 ,异步请求

同步请求,异步请求 ,这样的字眼我想既然你能看到这篇文章并且点击进来 ,说明我们应该是听过他的,并且 听得次数还不少,说到异步请求 ,首先我想到就是ajax, ajax的问题一会再说,今天我突然想到,我们平时都会 尽量的去 用ajax使用异步 的方式请求数据, 那么你知道到底是同步请求的数据更快,还是异步请求的数据更快吗? 异步传输是面向字符的传输,它的单位是字符:而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的. 同步传输通常要比异步传输快速得多.接收

关于异步请求AJAX的详解

1,异步请求的方法步骤: 1,判断当前用户支持的浏览器类型 XMLHttpRequest:判断是否支持非IE浏览器,对应的创建方法:xmlhttp = new XMLHttpRequest(); window.ActiveXObject:判断是否支持IE浏览器,对应的创建方法:xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 2,开辟连接创建路径 xmlhttp.open(参数一,参数二,参数三); 参数一:请求的方式get  post

关于异步请求AJAX的具体解释

1,异步请求的方法步骤: 1,推断当前用户支持的浏览器类型 XMLHttpRequest:推断是否支持非IE浏览器,相应的创建方法:xmlhttp?=?new?XMLHttpRequest(); window.ActiveXObject:推断是否支持IE浏览器,相应的创建方法:xmlhttp?=?new?ActiveXObject("Microsoft.XMLHTTP"); 2,开辟连接创建路径 xmlhttp.open(參数一,參数二,參数三); 參数一:请求的方式get??post

同步请求和异步请求的区别(理解ajax用)

同步请求:发送方发送数据包后,等待接收方发回响应之后,才能发送下一个数据包的通信方式. 异步请求:发送方发送数据包后,不用等待接收方发回响应,就可以发送下一个数据包的通信方式. 同步通信:要求通信双方在相同的时钟频率下,并且准确协调,是通过共享单个时钟或定时脉冲源来保证双方准确同步,效率高. 异步通信:不要求通信双方同步,双方可采用各自的时间源,遵循异步通信协议,以字符为数据传输单位,发送字符的时间间隔不确定,发送效率较同步通信低. 同步请求:通过单线程服务,该线程发送请求,在服务器运行时阻塞,

ajax异步请求模式

什么是异步请求 我们知道,在同步请求模型中,浏览器是直接向服务器发送请求,并直接接收.处理服务器响应的数据的.这就导致了浏览器发送完一个请求后,就只能干等着服务器那边处理请求,响应请求,在这期间其它事情都做不了.这就像是你到了一个新城市去找房子住,你可以自己去找,在网站上或者是街头小广告上去了解房源信息,找合适自己的那一个,然后去跟房东谈价钱.在这期间你的精力和时间大部分都用到了找房子上,你可能没时间再去找工作或者做其他的事情了.还有一种方式是你找一个租房中介,找你一个代理人,把你的需求告诉他让

ASIHTTP 框架,同步、 异步请求、 上传 、 下载

ASIHTTPRequest详解 ASIHTTPRequest 是一款极其强劲的 HTTP 访问开源项目.让简单的 API 完成复杂的功能,如:异步请求,队列请求,GZIP 压缩,缓存,断点续传,进度跟踪,上传文件,HTTP 认证.在新的版本中,还加入了 Objective-C 闭包 Block 的支持,让我们的代码加轻简灵活. 下面就举例说明它的 API 用法. 发起一个同步请求 同步意为着线程阻塞,在主线程中使用此方法会使应用Hang住而不响应任何用户事件.所以,在应用程序设计时,大多被用在