Вам действительно требуется асинхронное соединение для задачи, которую вы выполняете?Если все, что вы делаете в connection:didReceiveResponse:
, добавляет данные в буфер, то вы действительно ничего не получаете, используя асинхронный запрос.
Почему бы просто не отсоединить поток, который использует sendSynchronousRequest:returningResponse:error:
?Тогда ваш поток может вызвать обратный вызов, когда у него есть данные (или когда он допустил ошибку), и нет необходимости беспокоиться о том, когда безопасно начинать работу с ответом.
Если, с другой стороны,у вас был потоковый JSON-анализатор, который мог бы анализировать данные во время загрузки, поэтому имеет смысл использовать асинхронный запрос и передавать данные в анализатор по мере их поступления.Это потребует меньше памяти, так как вам не нужно будет буферизовать весь ответ, и будет казаться быстрее во время выполнения, потому что часть анализа выполняется во время загрузки данных.В таком случае вы должны использовать connection:didReceiveResponse:
для передачи данных в ваш анализатор вместо добавления их в буфер, а затем connectionDidFinishLoading:
, чтобы сообщить вашему анализатору, что для анализа больше нет данных.