2

je besoin de ce bloc de code à exécuter dans l'ordre:Comment garantir que les appels sont effectués en série dans l'application swift3 à l'aide GCD

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

Il est en cours d'exécution à l'intérieur de DispatchQueue.main.async() (chaque appel réseau est c'est pourquoi je suis en train bloquer temporairement l'entrée de l'utilisateur). J'apprends toujours rapidement et je me bats un peu avec le concept GCD. Toutes les recommandations seraient très appréciées.

+1

Essayé [OperationQueue] (https://developer.apple.com/reference/foundation/operationqueue)? – antonio081014

Répondre

2

Il suffit de placer l'appel endIgnoringInteractionEvents dans le gestionnaire de complétion de 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() 
+0

Cela fonctionne parfaitement! Je pensais que j'avais essayé, mais apparemment pas, merci beaucoup –