IOS 同步请求和异步请求 ios开发教程
2019独角兽企业重金招聘Python工程师标准>>>
下课了,坐下来静静的总结一下今天学的内容
首先是 同步请求和异步请求
同步请求,
使用主线程一次性获得所有请求数据,这就导致一个比较容易出现的问题
当请求的数据比较大时,就会出现卡顿现象,也就是阻塞主线程,这对于
用户体验来说不太好
异步请求
异步请求就是再创建一个线程,使用这个线程进行请求数据,逐步请求数据,
这样就可以不断获得数据然后进行界面更新,不至于造成卡顿现象
我们以请求一个URL链接来作为例子
同步请求
//定义一个宏
#define kURL @"http://www.baidu.com"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
//创建URL
NSURL *mURL = [NSURL URLWithString:kURL];
//创建一个请求,最大请求时间为20秒
NSURLRequest *requrst = [NSURLRequest requestWithURL:mURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20];
//同步请求返回的参数
NSURLResponse *response = nil;
NSError *error = nil;
//建立连接,下载数据,同步请求
NSData *data = [NSURLConnection sendSynchronousRequest:requrst returningResponse:&response error:
//打印服务器传回得数据
NSLog(@"data = %@",data);
//打印请求出错时的出错信息
NSLog(@"error is %@",[error localizedDescription]);
[self.window makeKeyAndVisible];
return YES;
}
下面看同样情况下异步请求
首先得遵守协议 NSURLConnectionDataDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
//同样先生成一个URL
NSURL *pURL = [NSURL URLWithString:kURL];
//创建一个请求
NSURLRequest *Pequest = [NSURLRequest requestWithURL:pURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20];
//发起请求,通过委托模式回调
[NSURLConnection connectionWithRequest:Pequest delegate:self];
[self.window makeKeyAndVisible];
return YES;
}
//下面就是实现协议中的方法了
#pragma 服务器开始响应
//服务器响应回调
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"服务器响应");
//创建一个空的data
self.mData = [NSMutableData data];
}
//服务器返回数据 data为返回数据,注意这里不一定是一次性返回所有数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"服务器返回数据");
[self.mData appendData:data];
}
/数据接收完毕
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"数据接收完毕");
//打印收到的数据
NSLog(@"data = %@",self.mData);
}
//数据失败所调用的方法
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"数据接收失败,失败原因%@",[error localizedDescription]);
}
至此就是异步请求了,可一边接受数据一边用接受的数据更新界面信息,不至于必须要接受完数据
才能进行界面更新。
转载于:https://my.oschina.net/u/2495938/blog/523272
IOS 同步请求和异步请求 ios开发教程相关推荐
- 【Objective-C】Http常用API、同步请求与异步请求[转]
比较实用, 转载保存 开发iOS应用要调用Http接口.获取Http资源,有一套比较成熟的框架ASIHTTPRequest.而我还是比较喜欢使用原始一点的API,而它跟其他的面向对象语言有许多共通之处 ...
- Servlet学习DAY_02:重定向/ 文件上传/ Cookie和Session/ 导入一个工程 / 配置欢迎页面 / 同步请求和异步请求/JSON和AJax介绍 /过滤器
重定向 重定向是服务器告诉客户端往指定的路径再次发出请求的指令 执行过程: 当服务器执行重定向方法时会给客户端返回302状态码和一个请求路径,浏览器接收到302后会立即往指定的路径再次发出请求 res ...
- Http中的同步请求和异步请求
最近在上springmvc的JSON数据交换的时候,老师下课提了一个课后问题:什么是异步请求?什么是同步请求?我想大部分同学听到这个问题的时候应该和我一样不知所云.现在,给大家分享一篇关于同步请求和异 ...
- 同步请求和异步请求的区别
同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据 ...
- Ajax——同步请求与异步请求
Ajax--同步请求与异步请求 浏览器和服务器之间数据传输方式 同步方式 异步方式 两种方式有什么不同? 同步请求,服务器响应时,页面整体刷新 异步请求,服务器响应时,页面局部刷新 异步请求有什么优点 ...
- JAVA发送HTTP同步请求和异步请求
JAVA发送HTTP同步请求和异步请求 同步请求:每一次执行httpClient.execute方法时都是阻塞的,必须等待到响应才能继续往下走. CloseableHttpClient httpCli ...
- ajax同步请求和异步请求
ajax同步请求和异步请求 前序 什么是同步请求? 什么是异步请求? 比较同步和异步请求 前序 最近好长时间没写博客了,主要由于前一段时间出差,没啥心思写,今天开始重新继续.进入主题,ajax的同步请 ...
- java同步异步区别_同步请求和异步请求的区别
同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的 ...
- 第106天:Ajax中同步请求和异步请求
同步请求和异步请求的区别 1.同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的.信息错误又要重新 ...
最新文章
- JAVA-Eclipse快捷键
- the job was canceled什么意思_这些英语短语,因为相差一个“the”导致意思大不相同!...
- 卷毛机器人抢大龙视频_腾讯这一措施,又砸碎了一些小企业的饭碗,QQ机器人成为历史...
- AAAI 2020 | 通过解纠缠模型探测语义和语法的大脑表征机制
- dynamic_cast, static_cast, const_cast, reinterprt_cast浅析
- 网易云信再被列入Gartner最新发布的两份CPaaS市场报告
- 数据仓库、数据集市、数据湖,这些大数据名词你知道多少?
- 【对讲机的那点事】如何使用阿里通信云对讲平台?
- Vue 2升级 Vue 3初探小细节
- jboss war包放哪_如何将JBoss HR Employee Rewards项目放入云端
- FastDFS部署及测试
- MyBatis3源码解析(3)查询语句执行
- 开始Azure之旅,参加深度培训 (转)
- Interpreting Attributions and Interactions of Adversarial Attacks论文解读
- 归纳推理测试没做完_无论顺还是剖,有几件事尽量在生娃当天做完,月子期间基本没负担...
- 文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance/Good Sync/Allway Sync)
- 74cms v5.0.1漏洞
- CCPC-wannafly Camp Day2 讲课内容总结(杜瑜皓-数据结构)
- H5唤起APP指南(附开源唤端库)
- 解密“互联网流量”生意本质