如何使用 GCD 确保调用在 swift3 应用程序中连续完成

How to ensure calls are done serially in swift3 app using GCD

我需要这段代码 运行 按顺序:

UIApplication.shared.beginIgnoringInteractionEvents()
loadDataTask.resume()
UIApplication.shared.endIgnoringInteractionEvents()

它在 DispatchQueue.main.async() 中 运行(每次网络调用都是我尝试暂时阻止用户输入的原因)。我仍在学习 swift 并在 GCD 概念上苦苦挣扎。任何建议将不胜感激。

只需将 endIgnoringInteractionEvents 调用放入 loadDataTask 的完成处理程序中。

UIApplication.shared.beginIgnoringInteractionEvents()
let loadDataTask = session.dataTask(with: request) { data, response, error in
    ...

    DispatchQueue.main.async {
        // do all UI and model updates here

        UIApplication.shared.endIgnoringInteractionEvents()
    }
}
loadDataTask.resume()