iOS-同步下载与异步下载
一、同步下载(交互不好,容易出现卡死现象,一般下载数据较小或有特定需求才使用)。 发送同步请求后,程序将停止用户交互,直到服务器返回数据完成后,才进行下一步的操作。
//第一步:创建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-同步下载与异步下载的更多相关文章
- IOS GCD图片数据异步下载,下载完成后合成显示
关于GCD使用详解,请看我的上一篇blog:http://www.cnblogs.com/xin-lang/p/6278606.html 前段时间遇到个需要异步下载,下载完成后再组合显示的东西.这里我 ...
- 一个简单的利用 WebClient 异步下载的示例(五)(完结篇)
接着上一篇,我们继续来优化.我们的 SkyParallelWebClient 可否支持切换“同步下载模式”和“异步下载模式”呢,好处是大量的代码不用改,只需要调用 skyParallelWebClie ...
- iOS-ASI异步下载图片
异步下载图片 异步下载图片ASIHTTPRequest *requestX = [ASIHTTPRequest requestWithURL:url]; self.re ...
- Swift正在使用NSURLConnection异步下载同步(实例解析)
原版的blog.转载请注明出处 http://blog.csdn.net/hello_hwc 一.同步异步两个概念 简单来讲.同步就是函数或者闭包(objective c中的block)运行完成才干返 ...
- iOS学习笔记之异步图片下载
写在前面 在iOS开发中,无论是在UITableView还是在UICollectionView中,通过网络获取图片设置到cell上是较为常见的需求.尽管有很多现存的第三方库可以将下载和缓存功能都封装好 ...
- iOS异步下载下载进度条显示
说到http异步下载,首先要知道其中的关键类. 关键类是NSURLConnection NSURLRequest NSMutableURLRequest 委托是 NSURLConnectionDo ...
- ios专题 - 异步下载加下载进度显示
[罗国强原创] 今天被刺激了,愤概地要写下这边博文. 说到http异步下载,首先要知道其中的关键类. 关键类是NSURLConnection NSURLRequest NSMutableURLReq ...
- 【iOS系列】-多图片多线程异步下载
多图片多线程异步下载 开发中非常常用的就是就是图片下载,我们常用的就是SDWebImage,但是作为开发人员,不仅要能会用,还要知道其原理.本文就会介绍多图下载的实现. 本文中的示例Demno地址,下 ...
- Android 中的异步下载
网上提到最多的就是利用AsyncTask进行异步下载,用android-async-http第三方库的也比较多.这里写点注意事项. 先说说android-async-http,这个库发送请求利用thr ...
随机推荐
- 【ZZNU-oj-2116:人间不值得】(1亿以内的货币拼音转数值求折扣价原价)--hash+String大法好+字符串处理+超大暴力模拟题
B : 人间不值得 概览问题列表状态排名编辑 Progress Bar 时间限制:1 Sec 内存限制:256 MiB提交:146 答案正确:12 提交 编辑 题目描述 家缠万贯来几时,我今停杯一问之 ...
- Hadoop的简单了解与安装
hadoop 一, Hadoop 分布式 简介Hadoop 是分布式的系统架构,是 Apache 基金会顶级金牌项目 分布式是什么?学会用大数据的思想来看待和解决问题 思 想很重要 1-1 . ...
- 从运行时的工作空间获取EMF文件(IFILE)
//EMFFILE_URI为EMF文件的URI String uriString = EMFFILE_URI.trimFragment().toPlatformString(true); if (ur ...
- python3.6 创建字典三法
这里献丑给出 python 3.6 创建字典变量的三法 其一:阳春白雪法:直接声明 mydic = {"name":"徐晓冬","age" ...
- IntelliJ IDEA必装插件以及SpringBoot使用小技巧合集
IntelliJ IDEA必装插件 有不知道怎么安装的吗?File-->settings打开设置面板,找到plugins,输入想要安装的插件回车即可 1.背景图片 目前,IDEA支持设置背景图片 ...
- webdriver对各种浏览器的支持
1.Firefox WebDriver实现了FireFoxDriver,无需用户下载FireFoxDriver. 优点:FireFoxDriver对页面的自动化测试支持得比较好,很直观地模拟页面的操作 ...
- python--第六天练习题
#1.正则表达式计算 origin = "1 - 2 * ( ( 60 - 30 + ( -40.0 / 5 ) * ( 9 - 2 * 5 / 3 + 7 / 3 * 99 / 4 * 2 ...
- 【题解】[Noip2010]机器翻译-C++
题目Description小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章.这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件 ...
- [git]一个本地仓库,多个远程仓库
操作步骤如下: 1. 克隆某个远程仓库的代码到本地 git clone http://...... // 或者 git clone git@.... 2. 查看当前远程仓库地址 // 查看需要添加的远 ...
- linux下core dump--转载
原文链接:https://www.cnblogs.com/Anker/p/6079580.html 1.前言 一直在从事linux下后台开发,经常与core文件打交道.还记得刚开始从事linux下 ...