一、同步下载(交互不好,容易出现卡死现象,一般下载数据较小或有特定需求才使用)。 发送同步请求后,程序将停止用户交互,直到服务器返回数据完成后,才进行下一步的操作。

//第一步:创建URL

NSURL *pURL = [NSURL URLWithString:URL];

//第二步:创建一个请求

NSURLRequest *pRequest = [NSURLRequest requestWithURL:pURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

//第三步:建立连接

NSError *pError = nil;

NSURLResponse *pRespond = nil;

//向服务器发起请求(发起之后,线程就会一直等待服务器响应,直到超出最大响应时间)

NSData *pData = [NSURLConnection sendSynchronousRequest:pRequest returningResponse:&pRespond error:&pError];

//输出获取结果

NSLog(@"pData = %@",pData);

//输出错误信息

NSLog(@"pError = %@",[pError localizedDescription]);

二、异步下载
异步下载支持应用程序在后台下载数据,在等待下载完成的过程中不会阻塞代码的运行,异步连接步骤如下:
/*异步请求*/

//1.获取网络资源路径(URL)

NSURL *pURL1 = [NSURL URLWithString:URL];

//2.根据URL创建请求

NSURLRequest *pRequset1 = [NSURLRequest requestWithURL:pURL1 cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

//3.(与同步请求的区别点)发起请求,通过委托模式回调完成数据获取

[NSURLConnection connectionWithRequest:pRequset1 delegate:self];

注意:在异步请求中使用了NSURLConnectionDataDelegate协议,委托对象为自己。其中有四个经常用到的方法,我们将获得的数据放在self.pData中,其类型为 NSMutableData 。

//1.服务器响应回调的方法

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

NSLog(@"服务器响应");

self.pData = [NSMutableData dataWithCapacity:5000];

}

//2.服务返回数据,客户端开始接受(data为返回的数据)

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

NSLog(@"服务器返回数据");

//将返回数据放入缓存区

[self.pData appendData:data];

}

//3.数据接受完毕回调的方法

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

NSLog(@"数据接受完毕");

NSLog(@"pData = %@",self.pData);

}

//4.接受数据失败时候调用的方法

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

{

NSLog(@"数据接受失败,失败原因:%@",[error localizedDescription]);

}

iOS-同步下载与异步下载的更多相关文章

  1. IOS GCD图片数据异步下载,下载完成后合成显示

    关于GCD使用详解,请看我的上一篇blog:http://www.cnblogs.com/xin-lang/p/6278606.html 前段时间遇到个需要异步下载,下载完成后再组合显示的东西.这里我 ...

  2. 一个简单的利用 WebClient 异步下载的示例(五)(完结篇)

    接着上一篇,我们继续来优化.我们的 SkyParallelWebClient 可否支持切换“同步下载模式”和“异步下载模式”呢,好处是大量的代码不用改,只需要调用 skyParallelWebClie ...

  3. iOS-ASI异步下载图片

    异步下载图片 异步下载图片ASIHTTPRequest *requestX = [ASIHTTPRequest requestWithURL:url];                 self.re ...

  4. Swift正在使用NSURLConnection异步下载同步(实例解析)

    原版的blog.转载请注明出处 http://blog.csdn.net/hello_hwc 一.同步异步两个概念 简单来讲.同步就是函数或者闭包(objective c中的block)运行完成才干返 ...

  5. iOS学习笔记之异步图片下载

    写在前面 在iOS开发中,无论是在UITableView还是在UICollectionView中,通过网络获取图片设置到cell上是较为常见的需求.尽管有很多现存的第三方库可以将下载和缓存功能都封装好 ...

  6. iOS异步下载下载进度条显示

    说到http异步下载,首先要知道其中的关键类. 关键类是NSURLConnection  NSURLRequest NSMutableURLRequest  委托是 NSURLConnectionDo ...

  7. ios专题 - 异步下载加下载进度显示

    [罗国强原创] 今天被刺激了,愤概地要写下这边博文. 说到http异步下载,首先要知道其中的关键类. 关键类是NSURLConnection  NSURLRequest NSMutableURLReq ...

  8. 【iOS系列】-多图片多线程异步下载

    多图片多线程异步下载 开发中非常常用的就是就是图片下载,我们常用的就是SDWebImage,但是作为开发人员,不仅要能会用,还要知道其原理.本文就会介绍多图下载的实现. 本文中的示例Demno地址,下 ...

  9. Android 中的异步下载

    网上提到最多的就是利用AsyncTask进行异步下载,用android-async-http第三方库的也比较多.这里写点注意事项. 先说说android-async-http,这个库发送请求利用thr ...

随机推荐

  1. Java字节码方法表与属性表深度剖析

    方法表: 在上一次咱们已经分析到了字段信息了,如下: 紧接着就是方法相关的信息了: 而它展开之后的结构为: 所以往后数2个字节,看一下方法的总数: 3个方法,可咱们只定义了两个方法呀: 因为编译器会为 ...

  2. JAVA遇见HTML——Servlet篇:Servlet基础

    代码实现: HelloServlet package servlet; import java.io.IOException; import java.io.PrintWriter; import j ...

  3. ASP.NET MVC QQ互联接入

    ASP.NET MVC QQ Connect 介绍 ASP.NET MVC QQ互联接入Demo. 项目地址:https://gitee.com/Liu_Cabbage/ASP.NET-MVC-QQ- ...

  4. python集合以及编码初识

    一.集合  set 集合是无序的,天然能去重,是可变的.例:s = {1,2,3,4,5} s = {} s1 = {1} print(type(s)) # 空{}就是字典 print(type(s1 ...

  5. POP3与SMTP以及python实现邮件的发送

    什么是POP3协议: POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议.它是因特网 ...

  6. Oracle 中文转字母 函数

    CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE V ...

  7. 001_linux基础命令

    开局日常吹牛一小时,今天更新的是linux的基础命令.现在是2018/5/30,晴,心情挺好的. 回归正题,linux基础命令只是一些初学者常用的命令,如果其他更多高级的命令等我学我再发上来,因为这个 ...

  8. 「CF716D」Complete The Graph「最短路」

    题意 给定一个\(n\)个点\(m\)条边的无向图,有一些边权暂时为\(0\),你需要分配一个\([1, 10^{18}]\)的数.最终使得\(s\)到\(t\)最短路为\(L\),输出一个可行的分配 ...

  9. bbs-admin-自定义admin(二)

    本文内容 目的:模仿admin默认配置,自定义配置类 一 查 1 查看数据 2 查看表头 3 分页器 4 search(搜索框)   5 action(批量处理)    6 filter(分类)   ...

  10. 【线性代数】5-1:行列式性质(The Properties of Determinants)

    title: [线性代数]5-1:行列式性质(The Properties of Determinants) categories: Mathematic Linear Algebra keyword ...