QoS 用户交互和更新 UI

Tre*_*vör 1 multithreading uikit grand-central-dispatch ios

在 iOS 上,UI 应该只通过主线程更新,但让我感兴趣的是在文档中,用户交互服务质量定义如下:

与用户交互的工作,例如在主线程上操作、刷新用户界面或执行动画。如果工作没有很快发生,用户界面可能会出现冻结。专注于响应能力和性能。

问题是,如果你dispatch_get_global_queue用那个 QoS调用,返回的队列不会是主队列,对吗?因此,提交到该队列的工作如何刷新 UI?

谢谢你。

ste*_*fos 5

Dispatch_get_global_queue 将始终为您提供全局并发队列。您不能像在主队列之外的任何队列中更新该队列中的 ui。

与用户交互 Qos 一样,它用于对 ui 至关重要的工作,并且需要尽快获得结果。

一个很好的例子是您有一个需要处理的图像。您可以使用 User-Interactive Qos 处理 global_queue 中的图像,完成后在 imageView 中设置结果图像(这是在主队列中完成的)。