В чем разница между NSURLSessionDataTask и NSURLSessionDownloadTask
В последнем яблоке ввести новый NSURLSession
вместо NSURLConnection
, так что в нем есть другая задача, так в чем разница между NSURLSessionDataTask
, NSURLSessionDownloadTask
?
и в каком сценарии используйте NSURLSessionTask
и где NSURLSessionDownloadTask
?
Ответы
Ответ 1
NSURLSessionDataTask:
Задачи данных обмениваются данными с использованием NSData. NSURLSessionDataTask не поддерживается в фоновых сеансах.
Задачи данных отправлять и получать данные с использованием объектов NSData. Задачи данных предназначены для коротких, часто интерактивных запросов из вашего приложения на сервер. Задачи данных могут возвращать данные в ваше приложение по одной части за раз после получения каждой части данных или сразу через обработчик завершения. Поскольку задачи данных не хранят данные в файле, они не поддерживаются в фоновых сеансах.
NSURLSessionDownloadTask:
NSURLSessionDownloadTask непосредственно записывает данные ответа во временный файл. Он поддерживает загрузку фонограмм, когда приложение не запущено.
Загрузка задач извлечения данных в виде файла и поддержка загрузки фонограмм, пока приложение не запущено.
Я думаю, что ниже изображение даст вам лучшее знание:
![enter image description here]()
Ответ 2
Документы ответят на это, но:
-
NSURLSessionDownloadTask
загружает файлы на диск, а затем сохраните полученный файл где-нибудь, чтобы использовать его позже.
-
NSURLSessionDataTask
загружает файлы в память, и вам решать, как вы хотите обработать ответ.
Ответ 3
Добавление к предыдущему ответу
Ответ 4
Мы можем получить его из файлов заголовков
/* * NSURLSessionDataTask не предоставляет никаких дополнительных * функциональность над NSURLSessionTask и ее присутствие просто * для обеспечения лексической дифференциации от задач загрузки и загрузки. */
@interface NSURLSessionDataTask : NSURLSessionTask
@end
/* * NSURLSessionUploadTask в настоящее время не предоставляет никаких дополнительные * функции над NSURLSessionDataTask. Все делегировать сообщения *, которые могут быть отправлены, ссылаясь на NSURLSessionDataTask одинаково применим * к NSURLSessionUploadTasks. */
@interface NSURLSessionUploadTask : NSURLSessionDataTask
@end
/* * NSURLSessionDownloadTask - это задача, которая представляет собой * локального хранения. */
@interface NSURLSessionDownloadTask : NSURLSessionTask