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
?
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:
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.
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.
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
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