QoS用户交互和更新UI

时间:2016-05-24 21:13:00

标签: ios multithreading uikit grand-central-dispatch

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

  

与用户交互的工作,例如在main上操作   线程,刷新用户界面或执行动画。如果   工作不会很快发生,用户界面可能会出现冻结。   重点关注响应能力和绩效。

问题在于,如果使用该QoS调用dispatch_get_global_queue,则返回的队列将不是主队列,我是对的吗?因此,提交到该队列的工作如何刷新UI?

谢谢。

1 个答案:

答案 0 :(得分:3)

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

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

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