2016-05-24 61 views
0

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

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

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

谢谢。

回答

2

Dispatch_get_global_queue将始终为您提供全局并发队列。除了main之外的任何队列中,您都不能更新该队列中的ui。

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

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

+0

谢谢!现在我明白了。 –