NSURLConnection и grand central dispatch

Целесообразно ли заключить 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);
35
задан Jonas Anderson 18 February 2011 в 04:37
поделиться