ios - 为什么我们不应该直接使用默认的QoS?

标签 ios swift grand-central-dispatch

我读过一些 GDC 帖子,甚至 Apple 都说开发人员不应直接使用 .default QoS,但为什么呢?易读性?

我认为为任务分配 .default QoS 与不显式分配 QoS 是一样的。

enter image description here

截图中的链接属于:https://developer.apple.com/library/archive/documentation/Performance/Conceptual/EnergyGuide-iOS/PrioritizeWorkWithQoS.html

最佳答案

.default 是出于向后兼容的原因,因为 GCD 无法猜测您想要分配任务的优先级。

使用其他 4 个推荐值有两个原因:

  • 它为系统提供了有关您的任务应遵循的执行层次结构的更多上下文。例如,与后台任务相比,用户启动的任务可能被安排在优先级更高的队列中。这使系统能够优化何时运行您的任务以及能源消耗。参见 Session 706 of WWDC 2017 .
  • Apple 芯片(iPhone、iPad、Apple TV、Apple Watch 和 M1 Mac)具有高性能和高效内核,系统根据 QoS 开发人员设置决定使用哪些内核。想象一下,用户交互任务将在高性能内核上运行,而后台任务可能会在高效内核上运行。有关详细信息,请参阅 Tuning Your Code’s Performance for Apple Silicon .

关于ios - 为什么我们不应该直接使用默认的QoS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68994933/

相关文章:

ios - 连接到 iPhone 应用程序内的 SQL 数据库

ios - 从子类更改主类

swift - CollectionView:scrollToItem、reloadData 和 Dispatch 队列

ios - 如何在iOS的对象库中使用 "pdfView"?

ios - 使用 Twitter 在 iPhone 中登录用户并将经过身份验证的用户保存到远程 Django 应用程序

ios - NSMutableAttributedString paragraphStyle 不适用

iOS 应用无法运行 : unable to dequeue a cell with identifier Cell

iphone - 当GCD中的某个 block 执行失败时我们该如何处理?

swift - GCD + Firebase 云存储

ios - 如何禁用 SwiftUI 的默认行为?