ipad更新完成卡在继续后选取网络后无法下一步是什么原因



下载百度知道APP抢鲜体验

使用百喥知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

在开发中我们很容易遇到这样嘚需求,需要我们同时做多个网络请求所有网络请求都完成后才能进行下一步的操作。如下载多个图片下载完了才能展示。

今天我们僦来研究一下这个问题的解决方案

运行,看看我们的控制台输出:

#warning - 绝对不要在应用主线程中等待一个Operation,只能在第二或次要线程中等待阻塞主线程将导致应用无法响应用户事件,应用也将表现为无响应。
遍历—>发起任务—>等待—>任务完成信号量加1—>等待结束,开始下一个任务
发起任务—>等待—>任务完成信号量加1—>等待结束,开始下一个任务
发起任务—>等待—>任务完成信号量加1—>等待结束,开始下一个任务

这样循环的模式,一个任务完成才能接着去做下面的任务满足我们的需求。

但我们也要发现这样一个问题我们使用这种方式,可以明显感觉出整个过程需要花费的时间大大增加了不像我们 3 中同时(几乎)开启任务等待完成回调,这里是一个网络请求发出等待,完成后发出第二个网络请求等待,完成后再发出第三个这样我们等待的时间是10个网络请求每一个回调时间的和,在时间上大大增加了消耗而且对于dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER),它是会阻塞线程的我们如果需要在网络请求完成后修改UI,那这种方式会影响我们的界面交互,接下来我们对比一下两者时间消耗:

所以大家还请谨慎使用

  • 我们在开发中可能会遇到多个网络请求的需求,比如一个界面有两个请求tableView的数据源及表头,需要等两个请求...

  • 多线程概念 线程线程指的是:1个CPU执行的CPU命令列为一条无分叉路径 多线程这种无分叉路径不止一条,存在多条即...

  • 1.没有自动装箱的masonry的使用 2.获取系统返回pop手势 3.忽略未使鼡变量警告 4.忽略方法未声明警告...

我要回帖

更多关于 ipad更新完成卡在继续 的文章

 

随机推荐