Je pense comprendre le fonctionnement de ce qui suit, mais j'apprécierais la confirmation.IOS/Objective-C: retour au fil principal
dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL: dataUrl];
[self fetchData:data];//go to web, get data and store in core data
}
dispatch_async(dispatch_get_main_queue(), ^{
//display new data on main thread.
}
Ma question est ce que je peux prendre pour acquis que l'affichage sur le thread principal ne pourra avoir lieu qu'après la conclusion de tout ce qui se produit en arrière-plan - peu importe combien de temps?
La raison pour laquelle j'apprécierais la confirmation est que parfois j'observe quelques problèmes avec l'affichage. Vous voulez être sûr que l'affichage n'essaie pas d'accéder aux données de base lorsque le thread d'arrière-plan n'a pas fini d'enregistrer.
c'est correct. mais que voulez-vous dire par "l'affichage n'est pas ...."? Comment "l'affichage" peut-il faire quoi que ce soit –
L'appel à '[NSData dataWithContentsOfURL]' pourrait faire une requête réseau depuis le web, en fonction de l'endroit où Si c'est une URL de fichier pointant vers un fichier sur le système de fichiers local, il récupèrera simplement les données du fichier local Si c'est une URL distante comme 'http: // foo/bar.jpg' Récupérer les données depuis un serveur distant de façon SYNCHRONISÉE –