Cuál es la diferencia entre NSURLSessionDataTask vs NSURLSessionDownloadTask


En la última apple introducir nuevo NSURLSession en reemplazar de NSURLConnection, por lo que en hay diferentes tareas, así que ¿cuál es la diferencia entre NSURLSessionDataTask, NSURLSessionDownloadTask ?

Y en qué escenario utilizar NSURLSessionTask y donde NSURLSessionDownloadTask?

Author: Toseef Khilji, 2013-12-16

4 answers

NSURLSessionDataTask : Las tareas de datos intercambian datos utilizando NSData. NSURLSessionDataTask no se admite en sesiones en segundo plano.

Las tareas de datos envían y reciben datos utilizando objetos NSData. Las tareas de datos están pensadas para solicitudes cortas, a menudo interactivas, de tu 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 pieza de 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, son no se admite 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 la siguiente imagen te dará un mejor conocimiento:

introduzca la descripción de la imagen aquí

 45
Author: Toseef Khilji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-16 06:59:19

Los documentos responden 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 memoria, y depende de usted determinar cómo desea manejar la respuesta.
 17
Author: zadr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-16 06:52:39

Añadiendo a la respuesta anterior

  • NSURLSessionDownloadTask es posible cancelar una tarea de descarga y reanudarla en otro momento.

  • NSURLSessionDataTask No podemos reanudarlo para más tarde.

 3
Author: Ankit garg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-21 15:44:15

Podemos obtenerlo de los archivos de encabezado

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

@interface NSURLSessionDataTask : NSURLSessionTask
@end

/ * * Una NSURLSessionUploadTask no proporciona actualmente ninguna * funcionalidad adicional sobre una NSURLSessionDataTask. Todo delegar mensajes * que pueden ser enviados haciendo referencia a un NSURLSessionDataTask se aplica igualmente * a las tareas de Nsurlsessionupload. */

@interface NSURLSessionUploadTask : NSURLSessionDataTask
@end

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

@interface NSURLSessionDownloadTask : NSURLSessionTask
 -1
Author: Victor Choy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-18 09:47:42