Я использую следующий код для осуществления сетевого вызова. Я знаю, что ответ будет выполняться в mainQueue, поскольку я указал параметр очереди как [NSOperationQueue mainQueue]
, но мне интересно, где будет выполняться фактическая операция sendAsynchronousRequest
. Операция вызывается из mainThread, поэтому она будет выполняться асинхронно в основном потоке или NSURLConnection
автоматически создает фоновый поток? Для этого нет документации, и инструмент iOS не отображает фоновые потоки, поэтому задается вопросом, как именно это работает! Документ Apple не дает подробностей об этом.iOS, который поток NSURLConnection sendAsynchronousRequest работает на
КСТАТИ Я знаю, что это одобряется, но у нас есть унаследованный код еще мигрировать использовать NSURLSession
[NSURLConnection sendAsynchronousRequest:urlRequest
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if(completion) {
completion(data, error);
}
}];
Та же проблема, когда вы используете следующие версии;
self.urlConnection = [NSURLConnection connectionWithRequest:urlRequest delegate:self];
Здесь также не определен, в какую нить выполняется этот запрос и как это выполняется асинхронно!
это вызывает у вас проблемы или вам просто интересно? – Wain
Это не вызывает никаких проблем, но я хочу убедиться, что операция не должна выполняться на основном потоке и должна быть отсоединена от другого потока. Я не хочу отправлять фоновый поток, если это абсолютно необходимо. – applefreak