我需要以下代码块才能按顺序运行:

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

它是在DispatchQueue.main.async()内部运行的(每个网络调用都是我试图暂时阻止用户输入的原因)。我仍在学习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()

关于ios - 如何确保使用GCD在swift3应用中串行完成调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42567306/

10-12 05:42