Я знаю о разнице между тем, как каждый из них работает, но я хочу знать с точки зрения производительности (ресурсы внутри iphone ).
Допустим, я отправляю асинхронный запрос и жду вызова делегата. Это не заблокирует мой поток выполнения. Но в чем разница между этим и простой отправкой запроса на синхронизацию в другом потоке с помощью GCD.
Вот так:
dispatch_queue_t findPicsQueue;
findPicsQueue = dispatch_queue_create("FindPicsQueue", NULL);
dispatch_async(findPicsQueue, ^{
NSData *theResponse = [NSURLConnection sendSynchronousRequest:theRequest
returningResponse:&response
error:&error];
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
if (error) {
NSLog(@"Error: %@",error)
}
if (httpResponse.statusCode == 200)
{
[self parseXMLFile:theResponse]; // Parses Data and modifies picturesFound
for (PictureData *tmp in picturesFound) {
NSLog(@"%@",tmp);
}
}
}
Он не заблокирует мой интерфейс, поскольку он не выполняется в основном потоке, но заблокирует этот конкретный поток. И я также думаю, что GCD запускает очереди одновременно.
Заранее спасибо. Очень хочу прояснить этот вопрос.