Целесообразно ли заключить NSUrlConnection в блоки стиля gcd и запустить его в очереди low_priority?
Мне нужно убедиться, что мои соединения не выполняются в основном потоке, а соединения должны быть асинхронными. Мне также нужно, чтобы несколько одновременных запросов выполнялись одновременно.
Если я пойду по маршруту gcd, я не уверен, в каком потоке будут вызваны методы NSUrlConnectionDelegate.
NSURLConnection полагается на делегатов, поэтому после завершения соединения любой класс оболочки, который его обрабатывает, должен будет вызвать вызывающего. Я не уверен, как поступать со всеми различными обратными вызовами, которые вызываются при запуске / завершении работы соединения:
- (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)incrementalData;
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
Должен ли я просто вызывать синхронные версии, но заключенные в блоки gcd? А если я хочу отменить звонок, используйте dispatch_suspend. ?
dispatch_async(queue,^{
NSString* result = [self mySynchronousHttp:someURLToInvoke];
});
// If I need to cancel
dispatch_suspend(queue);