ios objective-c nsurlsession nsurlsessiondownloadtask nsurlsessiontask

ios - ¿Cuál es la diferencia entre NSURLSessionDataTask vs NSURLSessionDownloadTask



objective-c nsurlsessiontask (4)

Añadiendo a la respuesta anterior

  • NSURLSessionDownloadTask Es posible cancelar una tarea de descarga y reanudarla en un momento posterior.

  • NSURLSessionDataTask No podemos reanudarlo para más adelante.

En la última NSURLSession Apple, introduzca la nueva NSURLSession en reemplazo de NSURLConnection , así que hay diferentes tareas, ¿cuál es la diferencia entre NSURLSessionDataTask , NSURLSessionDownloadTask ?

y en qué escenario usar NSURLSessionTask y donde NSURLSessionDownloadTask ?


Los docs contestan esto, pero:

  • NSURLSessionDownloadTask descarga archivos en un disco, y luego guarda el archivo resultante en algún lugar para usarlo más adelante.
  • NSURLSessionDataTask descarga archivos en la memoria, y depende de usted determinar cómo desea manejar la respuesta.

Podemos obtenerlo desde archivos de cabecera

/ * * Una NSURLSessionDataTask no proporciona ninguna funcionalidad adicional * sobre una NSURLSessionTask y su presencia es meramente * para proporcionar una diferenciación léxica de las tareas de descarga y carga. * /

@interface NSURLSessionDataTask : NSURLSessionTask @end

/ * * Una NSURLSessionUploadTask actualmente no proporciona ninguna funcionalidad adicional * sobre una NSURLSessionDataTask. Todos los mensajes de delegado * que se pueden enviar haciendo referencia a una NSURLSessionDataTask se aplican igualmente * a NSURLSessionUploadTasks. * /

@interface NSURLSessionUploadTask : NSURLSessionDataTask @end

/ * * NSURLSessionDownloadTask es una tarea que representa una descarga a * almacenamiento local. * /

@interface NSURLSessionDownloadTask : NSURLSessionTask


NSURLSessionDataTask : las tareas de datos intercambian datos utilizando NSData. NSURLSessionDataTask no se admite en sesiones de fondo.

Las tareas de datos envían y reciben datos utilizando objetos NSData. Las tareas de datos están destinadas a solicitudes cortas, a menudo interactivas, de su aplicación a un servidor. Las tareas de datos pueden devolver datos a su aplicación una pieza a la vez después de recibir cada parte de los datos, o todos a la vez a través de un controlador de finalización. Debido a que las tareas de datos no almacenan los datos en un archivo, no se admiten en sesiones en segundo plano.

NSURLSessionDownloadTask : NSURLSessionDownloadTask escribe directamente los datos de respuesta en un archivo temporal. Admite descargas en segundo plano cuando la aplicación no se está ejecutando.

Las tareas de descarga recuperan datos en forma de archivo y admiten descargas en segundo plano mientras la aplicación no se está ejecutando.

Supongo que debajo de la imagen te doy un mejor conocimiento: