Zacząłem używać NSURLSession
, unikając NSURLConnection
teraz dni, ponieważ jest to nowy i elegancki interfejs API firmy Apple. Poprzednio używałam wywołania NSURLRequest
w bloku GCD
, aby wykonać go w tle. Oto jak kiedyś zrobić w przeszłości:Czy zadanie NSURLSession dla danych HTTP (NSURLSessionDataTask) działa w wątku w tle, czy będziemy musieli podać kolejkę?
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
});
});
Teraz tutaj jest jak używam 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);
}];
}
Chcę wiedzieć, że moja prośba zostanie zawarta w dniu samego lub I wątku tła będą musiały zapewnić mój własny mechanizm w taki sam sposób jak w przypadku NSURLRequest
?
Proszę podziel się swoją wiedzą. Z góry dziękuję !!!
o ile nic nie wiem działa w tle, chyba u make it !! !! –
@ T_77 Istnieje wiele metod kakao (w tym ten), które uruchamiają kod na wątkach w tle. – Rob
Czy możesz mi powiedzieć niektóre z tych @Rob –