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开发教程相关推荐

  1. 【Objective-C】Http常用API、同步请求与异步请求[转]

    比较实用, 转载保存 开发iOS应用要调用Http接口.获取Http资源,有一套比较成熟的框架ASIHTTPRequest.而我还是比较喜欢使用原始一点的API,而它跟其他的面向对象语言有许多共通之处 ...

  2. Servlet学习DAY_02:重定向/ 文件上传/ Cookie和Session/ 导入一个工程 / 配置欢迎页面 / 同步请求和异步请求/JSON和AJax介绍 /过滤器

    重定向 重定向是服务器告诉客户端往指定的路径再次发出请求的指令 执行过程: 当服务器执行重定向方法时会给客户端返回302状态码和一个请求路径,浏览器接收到302后会立即往指定的路径再次发出请求 res ...

  3. Http中的同步请求和异步请求

    最近在上springmvc的JSON数据交换的时候,老师下课提了一个课后问题:什么是异步请求?什么是同步请求?我想大部分同学听到这个问题的时候应该和我一样不知所云.现在,给大家分享一篇关于同步请求和异 ...

  4. 同步请求和异步请求的区别

    同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式.   异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据 ...

  5. Ajax——同步请求与异步请求

    Ajax--同步请求与异步请求 浏览器和服务器之间数据传输方式 同步方式 异步方式 两种方式有什么不同? 同步请求,服务器响应时,页面整体刷新 异步请求,服务器响应时,页面局部刷新 异步请求有什么优点 ...

  6. JAVA发送HTTP同步请求和异步请求

    JAVA发送HTTP同步请求和异步请求 同步请求:每一次执行httpClient.execute方法时都是阻塞的,必须等待到响应才能继续往下走. CloseableHttpClient httpCli ...

  7. ajax同步请求和异步请求

    ajax同步请求和异步请求 前序 什么是同步请求? 什么是异步请求? 比较同步和异步请求 前序 最近好长时间没写博客了,主要由于前一段时间出差,没啥心思写,今天开始重新继续.进入主题,ajax的同步请 ...

  8. java同步异步区别_同步请求和异步请求的区别

    同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的 ...

  9. 第106天:Ajax中同步请求和异步请求

    同步请求和异步请求的区别 1.同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的.信息错误又要重新 ...

最新文章

  1. JAVA-Eclipse快捷键
  2. the job was canceled什么意思_这些英语短语,因为相差一个“the”导致意思大不相同!...
  3. 卷毛机器人抢大龙视频_腾讯这一措施,又砸碎了一些小企业的饭碗,QQ机器人成为历史...
  4. AAAI 2020 | 通过解纠缠模型探测语义和语法的大脑表征机制
  5. dynamic_cast, static_cast, const_cast, reinterprt_cast浅析
  6. 网易云信再被列入Gartner最新发布的两份CPaaS市场报告
  7. 数据仓库、数据集市、数据湖,这些大数据名词你知道多少?
  8. 【对讲机的那点事】如何使用阿里通信云对讲平台?
  9. Vue 2升级 Vue 3初探小细节
  10. jboss war包放哪_如何将JBoss HR Employee Rewards项目放入云端
  11. FastDFS部署及测试
  12. MyBatis3源码解析(3)查询语句执行
  13. 开始Azure之旅,参加深度培训 (转)
  14. Interpreting Attributions and Interactions of Adversarial Attacks论文解读
  15. 归纳推理测试没做完_无论顺还是剖,有几件事尽量在生娃当天做完,月子期间基本没负担...
  16. 文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance/Good Sync/Allway Sync)
  17. 74cms v5.0.1漏洞
  18. CCPC-wannafly Camp Day2 讲课内容总结(杜瑜皓-数据结构)
  19. H5唤起APP指南(附开源唤端库)
  20. 解密“互联网流量”生意本质

热门文章

  1. 痴迷物理,无法自拔——3.24
  2. web异步开发——json
  3. Golang入门教程(四)变量声明
  4. sizeof和strlen的区别
  5. 根据条件单元格的值改变单元格的显示色块和文字颜色等属性。
  6. 作业09-集合与泛型
  7. Bootstrap 第一篇
  8. .NET中的字符串你了解多少?
  9. [计算机]“华为的冬天”——任正非(华为总裁)
  10. sql 2000 分页