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

时间:2017-03-02 22:35:41

标签: ios swift swift3 grand-central-dispatch ios-multithreading

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

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

它在DispatchQueue.main.async()内运行(每次网络通话都是我试图暂时阻止用户输入的原因)。我仍然在学习GCD概念的快速和挣扎。任何建议都将非常感谢。

1 个答案:

答案 0 :(得分:2)

只需将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()