我需要将 urlsession datatask 放在另一个 DispatchQueue 上还是自动完成?

Do I need place urlsession datatask on another DispatchQueue or it's done automatically?

之前没有任何数据任务和 urlsession 的经验。所以我很好奇。案例是 - 尝试 table 无限滚动。当这个方法调用时

tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath])

来自 UITableViewDataSourcePrefetching 并检查至少有一个索引路径有行大于当前最大项目 - 我开始使用 urlsession 数据任务加载新数据。问题是 - 我需要做类似

的事情吗
let queue = DispatchQueue.gloabl(qos: .userInteractive)
queue.async {
  myTaskGoesHere
}

URLSession 数据任务始终 运行 在后台线程上。因此,您必须在完成处理程序闭包中切换到主队列来更新用户界面。因为数据任务的答案是在 iOS 启动任务的同一线程上传递的。

顺便说一句,.userInteractive也在主线程上运行。来自文档:

User-interactive tasks have the highest priority on the system. Use this class for tasks or queues that interact with the user or actively update your app's user interface. For example, use this for class for animations or for tracking events interactively.