Желательно ли обернуть 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);