Que signifie ce morceau de code?
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
TMBaseParser *parser=[[TMBaseParser alloc] init];
parser.delegate=self;
NSString *post =nil;
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
[parser parseForServiceType:TMServiceCategories postdata:postData];
});
veuillez l'expliquer brièvement.
Le morceau de code
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
});
est exécuté de manière asynchrone sur un thread d'arrière-plan. Cela est dû au fait que l'analyse des données peut prendre du temps et bloquer le thread principal, ce qui arrêterait toutes les animations et l'application ne serait pas réactive.
Si vous souhaitez en savoir plus, lisez la documentation d'Apple sur Grand Central Dispatch et Dispatch Queue .
Si les extraits de code ci-dessus ne fonctionnent pas, essayez ceci:
Objectif-C:
dispatch_async(dispatch_get_main_queue(), ^{
});
Les mises à jour de l'interface utilisateur doivent toujours être exécutées à partir de la file d'attente principale. Le symbole "^" indique le début d'un bloc.
Swift 3:
DispatchQueue.global(qos: .background).async {
print("This is run on the background queue")
DispatchQueue.main.async {
print("This is run on the main queue, after the previous code in outer block")
}
}
Il s'agit d'un bloc Grand Central Dispatch.