J'ai commencé à utiliser NSURLSession
en évitant NSURLConnection
maintenant quelques jours car il s'agit d'une API nouvelle et élégante fournie par Apple. Auparavant, j'avais l'habitude de mettre l'appel NSURLRequest
dans le bloc GCD
pour l'exécuter en arrière-plan. Voici comment je l'habitude de faire dans le passé:Est-ce que NSURLSession pour la tâche de données HTTP (NSURLSessionDataTask) s'exécute dans le thread d'arrière-plan ou nous devons fournir la file d'attente?
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURLRequest *request = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"www.stackoverflow.com"]];
NSURLResponse *response;
NSError *error;
NSData *data = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
if (error) {
// handle error
return;
}
dispatch_async(dispatch_get_main_queue(), ^{
// do something with the data
});
});
Maintenant, voici comment j'utilise NSURLSession
:
- (void)viewDidLoad
{
[super viewDidLoad];
/*-----------------*
NSURLSession
*-----------------*/
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:
[NSURL URLWithString:@"https://itunes.apple.com/search?term=apple&media=software"]
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@", json);
}];
}
Je veux savoir que, Ma demande sera exécutée sur un fil d'arrière-plan lui-même ou je devra fournir mon propre mécanisme de la même façon que je l'ai fait dans le cas de NSURLRequest
?
Veuillez partager vos connaissances. Merci d'avance !!!
pour autant que je ne sais rien fonctionne sur fond sauf si u le rendre !! !! –
@ T_77 Il existe de nombreuses méthodes Cocoa (y compris celle-ci) qui exécutent du code sur les threads d'arrière-plan. – Rob
Pourriez-vous s'il vous plaît me dire certains de ces @Rob –