Асинхронный HTTP-запрос с блоком обратного вызова в стандартных классах iOS, аналогичных ASIHTTPRequest - PullRequest
0 голосов
/ 21 ноября 2011

Я считаю, что использование блоков в некоторых случаях удобнее, чем использование делегатов.Я использовал ASIHTTPRequest , который обеспечивает блоки в качестве механизма обратного вызова.

Мне было интересно, предоставляют ли стандартные библиотеки Apple ту же технику для HTTP-связи на iOS4.

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

Нет, они не. NSURLConnection работает с делегированием.

1 голос
/ 04 января 2012

Как правильно указал erpayo, NSURLConnection в iOS не поддерживает блоки.Однако это возможно при использовании NSURLConnection на Mac с использованием следующего метода:

sendAsynchronousRequest: queue: завершениеHandler:

Загружает данные для запроса URL ивыполняет блок обработчика в очереди операций, когда запрос завершается или завершается неудачей.

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler

Параметры

  • request Запрос URL-адреса для загрузки.Объект запроса глубоко копируется как часть процесса инициализации.Изменения, внесенные в запрос после возврата этого метода, не влияют на запрос, используемый для процесса загрузки.
  • queue Очередь операций, в которую отправляется блок обработчика при завершении или сбое запроса.
  • handler Блок обработчика для выполнения.

Обсуждение

Если запрос завершается успешно, параметр data блока обработчика содержит данные ресурса, а параметр error равен nil.Если запрос не выполнен, параметр data равен nil, а параметр error содержит информацию об ошибке.

Доступность

Доступно в Mac OS X v10.7 и более поздних версиях.

Объявлено в

NSURLConnection.h

...