如何在 Swift 中使用后台线程?


在本文中,您将学习如何在 Swift 语言中使用后台线程执行任务。

Swift 为我们提供了多种执行后台任务的方法。其中一个流行的选择是 GCD(通常称为 Grand Central Dispatch),它是一个用于在 Swift 语言中管理并发性的低级 API。

GCD 为我们提供了一个全局队列来创建后台线程。您可以调用 DispatchQueue.global() 方法来获取全局调度队列的实例。使用相同的实例,您可以使用 async() 方法在该队列上异步执行代码块。

语法

以下是如何使用 GCD 创建后台线程的语法:

DispatchQueue.global().async {
   // This block of code will be executed in the background
   // Perform some tasks here
}

这是使用 DispatchQueue 执行异步任务的基本语法。

DispatchQueue 使我们能够为操作分配优先级。为此,您可以使用全局队列的服务质量 (QoS) 类,它确定任务的优先级。

GCD 提供以下 QoS 类:

  • .userInteractive - 此类中的任务适用于需要立即完成以提供响应式用户界面的任务。这些任务在主线程上以最高优先级运行。

  • .userInitiated - 此类中的任务适用于用户发起的任务,并且需要高性能。这些任务在高优先级线程上运行,其优先级高于 .default 类中的任务。

  • .default - 此类中的任务适用于非时间关键型任务,并且不需要高性能。这些任务在低优先级线程上运行,其优先级低于 .userInitiated 类中的任务。

  • .utility - 此类中的任务适用于可能需要很长时间才能完成并且不需要高性能的任务。这些任务在低优先级线程上运行,其优先级低于 .default 类中的任务。

  • .background - 后台任务具有所有任务中最低的优先级。将此类分配给您用于在应用程序在后台运行时执行工作的任务或调度队列。

如何使用后台线程执行任务?

DispatchQueue.global(qos: .background).async {
   // write code to perform a task in the background
}

当您使用后台线程时,请记住它们具有所有线程中最低的优先级。因此,请仔细执行您的任务。

结论

这是 iOS 应用程序中最重要的内容,因为很多时候您需要在后台线程中执行一些任务。例如,您必须在后台线程中获取用户的当前位置,这将是一个不错的选择。

更新于: 2023年1月3日

7K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告