Желательно ли заключить 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);