Подтвердить что ты не робот

В чем разница между NSURLSessionDataTask и NSURLSessionDownloadTask

В последнем яблоке ввести новый NSURLSession вместо NSURLConnection, так что в нем есть другая задача, так в чем разница между NSURLSessionDataTask, NSURLSessionDownloadTask?

и в каком сценарии используйте NSURLSessionTask и где NSURLSessionDownloadTask?

4b9b3361

Ответ 1

NSURLSessionDataTask: Задачи данных обмениваются данными с использованием NSData. NSURLSessionDataTask не поддерживается в фоновых сеансах.

Задачи данных отправлять и получать данные с использованием объектов NSData. Задачи данных предназначены для коротких, часто интерактивных запросов из вашего приложения на сервер. Задачи данных могут возвращать данные в ваше приложение по одной части за раз после получения каждой части данных или сразу через обработчик завершения. Поскольку задачи данных не хранят данные в файле, они не поддерживаются в фоновых сеансах.

NSURLSessionDownloadTask: NSURLSessionDownloadTask непосредственно записывает данные ответа во временный файл. Он поддерживает загрузку фонограмм, когда приложение не запущено.

Загрузка задач извлечения данных в виде файла и поддержка загрузки фонограмм, пока приложение не запущено.

Я думаю, что ниже изображение даст вам лучшее знание:

enter image description here

Ответ 2

Документы ответят на это, но:

  • NSURLSessionDownloadTask загружает файлы на диск, а затем сохраните полученный файл где-нибудь, чтобы использовать его позже.
  • NSURLSessionDataTask загружает файлы в память, и вам решать, как вы хотите обработать ответ.

Ответ 3

Добавление к предыдущему ответу

  • NSURLSessionDownloadTask. Можно отменить задачу загрузки и возобновить ее позже.

  • NSURLSessionDataTask Мы не можем его возобновить позже.

Ответ 4

Мы можем получить его из файлов заголовков

/* * NSURLSessionDataTask не предоставляет никаких дополнительных * функциональность над NSURLSessionTask и ее присутствие просто * для обеспечения лексической дифференциации от задач загрузки и загрузки. */

@interface NSURLSessionDataTask : NSURLSessionTask
@end

/* * NSURLSessionUploadTask в настоящее время не предоставляет никаких дополнительные * функции над NSURLSessionDataTask. Все делегировать сообщения *, которые могут быть отправлены, ссылаясь на NSURLSessionDataTask одинаково применим * к NSURLSessionUploadTasks. */

@interface NSURLSessionUploadTask : NSURLSessionDataTask
@end

/* * NSURLSessionDownloadTask - это задача, которая представляет собой * локального хранения. */

@interface NSURLSessionDownloadTask : NSURLSessionTask