NSURLSessionDataTask和NSURLSessionDownloadTask有什么不同?
在最新的苹果引入新的NSURLSession
来取代NSURLConnection
,所以在这里有不同的任务,那么NSURLSessionDataTask
和NSURLSessionDownloadTask
什么NSURLSessionDownloadTask
呢?
并在哪个场景使用NSURLSessionTask
和NSURLSessionDownloadTask
?
NSURLSessionDataTask :数据任务使用NSData交换数据。 后台会话中不支持NSURLSessionDataTask。
数据任务使用NSData对象发送和接收数据。 数据任务适用于从应用程序到服务器的简短交互式请求。 数据任务可以在每次接收数据后一次将数据返回给您的应用程序,或者一次通过完成处理程序返回数据。 由于数据任务不会将数据存储到文件中,因此在后台会话中不支持这些数据。
NSURLSessionDownloadTask :NSURLSessionDownloadTask直接将响应数据写入临时文件。 它在应用程序不运行时支持后台下载。
下载任务以文件forms检索数据,并在应用程序未运行时支持后台下载。
我想下面的图片给你更好的知识:
文档回答这个,但是:
-
NSURLSessionDownloadTask
将文件下载到磁盘,然后将结果文件保存到某处以供稍后使用。 -
NSURLSessionDataTask
在内存中下载文件,由您来决定如何处理响应。
添加到上面的答案
-
NSURLSessionDownloadTask可以取消下载任务并在稍后恢复。
-
NSURLSessionDataTask我们不能恢复它以后。
我们可以从头文件中得到它
/ * * NSURLSessionDataTask不提供NSURLSessionTask的任何附加*function,它的存在仅仅是为了提供下载和上传任务的词汇区分。 * /
@interface NSURLSessionDataTask : NSURLSessionTask @end
/ * * NSURLSessionUploadTask当前不提供任何额外的*functionNSURLSessionDataTask。 所有可能引用NSURLSessionDataTask的委托消息*同样适用于NSURLSessionUploadTasks。 * /
@interface NSURLSessionUploadTask : NSURLSessionDataTask @end
/ * * NSURLSessionDownloadTask是一个代表下载到本地存储的任务。 * /
@interface NSURLSessionDownloadTask : NSURLSessionTask