dispatch_async et bloc dans iOS
Ce que ce morceau de code signifie?
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 expliquer brièvement.
- Ce code semble bizarre: d'abord
post
est fixé ànil
. Dans la ligne suivante, un message est envoyé àpost
. Ça va pas le faire quoi que ce soit, il sera? - Si le post == nil alors [post dataUsingEncoding:NSUTF8StringEncoding] va retourner nil ainsi.
Vous devez vous connecter pour publier un commentaire.
Le morceau de code dans
est exécuté de manière asynchrone sur un thread d'arrière-plan. Ceci est fait car l'analyse de données peut être une tâche qui prend du temps et il pourrait bloquer le thread principal qui serait arrêter toutes les animations et l'application ne serait pas sensible.
Si vous voulez en savoir plus, consultez la documentation d'Apple sur Grand Central Dispatch et L'Expédition De La File D'Attente.
Si les extraits de code ne fonctionne pas, alors, essayez ceci:
Objective-C:
Mises à jour de l'INTERFACE utilisateur devrait toujours être exécuté à partir de la file d'attente principale. Le "^" symbole indique un début d'un bloc.
Swift 3:
, ^
faire? Et pour ce que swift est la version de cet exemple pour?Qui est un Grand Central Dispatch bloc.