ios – complition处理程序关闭是否总是在后台线程运行?

ios – complition处理程序关闭是否总是在后台线程运行?,第1张

概述完成处理程序闭包在ios开发中很常见.例如URLSession类中的dataTask(with:completionHandler :). UI引擎由主线程管理,URLSession的API调用在后台线程下运行,如果处理程序中需要UI更新,则需要将其调度到主线程. 问题1: 是否所有来自ios框架的完成Handler闭包都在后台线程中运行? 问题1.1: 例如,开发人员创建的所有转义闭包是否都在后 完成处理程序闭包在ios开发中很常见.例如URLSession类中的dataTask(with:completionHandler :).

UI引擎由主线程管理,URLSession的API调用在后台线程下运行,如果处理程序中需要UI更新,则需要将其调度到主线程.

问题1:
是否所有来自ios框架的完成Handler闭包都在后台线程中运行?

问题1.1:
例如,开发人员创建的所有转义闭包是否都在后台线程中运行?

问题2:
我在iPhone X模拟器中看到了多达8个线程.哪一个是主线程,哪一个是ios中的后台线程?他们有不同的优先级和计算能力吗?

解决方法 请记住,您确实询问的是队列和线程,而不仅仅是完成处理程序和闭包.任何类型的代码都在队列(由一个或多个线程组成)上执行.在这方面,完成处理程序关闭没有什么特别之处.

Q1 – 大多数iOS SDK提供的完成处理程序在后台队列上调用,但除非文档明确说明调用它的队列,否则不做这个假设.甚至可以将URLSession配置为在特定队列(包括主队列)上运行.

Q1.1 – 您编写的闭包在您调用它们的任何队列上运行.没有魔法使它们在后台队列上运行.

Q2 – 第一个线程始终是主队列的唯一线程.所有其他线程都来自后台队列.每个线程可以具有基于其队列的属性给出的任何优先级.

您应该查看Dispatch文档以获取更多详细信息,尤其是dispatchQueue.

总结

以上是内存溢出为你收集整理的ios – complition处理程序关闭是否总是在后台线程运行?全部内容,希望文章能够帮你解决ios – complition处理程序关闭是否总是在后台线程运行?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1016629.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存