Асинхронное NSURLConnection с NSOperation

Я хочу сделать NSURLConnection в фоновом режиме, потому что у него есть много данных. Forums говорят использовать кодировку конечной длины Apple для использования в didEnterBackground . но я хочу избежать этого. Вместо этого я использую следующий код через NSOperation с NSInvocation как, но он не работает. connectToServer работает с NSURLConnection help please? didReceiveData , didReceiveResponse методы делегата не вызываются?

  NSOperationQueue *queue = [NSOperationQueue new]; NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(connectToServer) object:nil]; [queue addOperation:operation]; [operation release]; [queue autorelease]; -(void)connectToServer { NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; NSURLConnection *theConnection = [[[NSURLConnection alloc] initWithRequest:theRequest delegate:self] autorelease]; if( theConnection ) { webData = [[NSMutableData data] retain]; } else { NSLog(@"theConnection is NULL"); } } 

Этот вопрос был задан на миллион раз. Делегаты не получают вызов, потому что с iOS 4 операции запускаются во вторичном потоке. Поток, вероятно, выходит до того, как вызываются делегаты, и это все.

Держите соединение на основном потоке и обрабатывайте данные в фоновом потоке с помощью GCD.

Здесь я писал обо всем этом: http://cocoaintheshell.com/2011/04/nsurlconnection-synchronous-asynchronous/

EDIT: обновленная ссылка.

Apple предоставляет QHTTPOperation , который делает именно то, что вы хотите, инкапсулирует NSURLConnection в NSOperation для одного запроса. Вы можете найти его в примере кода Apple.

QHTTPOperation фактически является подклассом QRunLoopOperation который позволяет инкапсулировать логику, которая зависит от обратных вызовов run-loop в NSOperation.

ASIHTTPRequest является аналогичным популярным решением, AFAIK он больше не поддерживается.

Посмотрите на метод sendAsynchronousRequest: queue: completeHandler: описанный здесь в документации Apple . Он позволяет асинхронные запросы с NSURLConnection.

Обратите внимание, что для этого требуется iOS5 или выше

Interesting Posts

MKPinAnnotationView не центрирован

Медленная скорость при преобразовании NSDATA в UIImage

Как установить значение по умолчанию в подклассе модели Mantle iOS

Ошибка выполнения – нить 1: сигнал SIGABRT – нет выхода консоли

Почему приложение iOS не работает на моем iPod touch?

прозрачность iOS6 / iOS 7 UIView

Отчет о сбоях с использованием Crashlytics Fabric не работает после обновлений

Изменение устройства захвата камеры во время записи видео

Получить ссылку Bundle из Path in Swift

Когда следует использовать UIImageJPEGRepresentation и UIImagePNGRпредставление для загрузки на сервер разных форматов изображений?

Анимация не перезапускается при перемещении между диспетчерами просмотра

Каким будет поток для подключения двух периферийных устройств BLE?

iOS UITableViewCell горизонтально прокручивает подзаголовки с автоматической компоновкой

pushViewController не работает в iOS 5, но отлично работает в iOS6

Не удалось запустить процесс Xcode: безопасность

Давайте будем гением компьютера.