在最新的苹果中引入了新NSURLSession
的替换,所以有不同的任务,NSURLConnection
那么有什么区别?NSURLSessionDataTask
NSURLSessionDownloadTask
在哪种情况下使用NSURLSessionTask
以及在哪里使用NSURLSessionDownloadTask
?
在最新的苹果中引入了新NSURLSession
的替换,所以有不同的任务,NSURLConnection
那么有什么区别?NSURLSessionDataTask
NSURLSessionDownloadTask
在哪种情况下使用NSURLSessionTask
以及在哪里使用NSURLSessionDownloadTask
?
NSURLSessionDataTask:数据任务使用 NSData 交换数据。后台会话不支持 NSURLSessionDataTask。
数据任务使用 NSData 对象发送和接收数据。数据任务旨在用于从您的应用程序到服务器的简短的、通常是交互式的请求。数据任务可以在收到每条数据后一次将数据返回到您的应用程序,或者通过完成处理程序一次性返回所有数据。因为数据任务不将数据存储到文件中,所以它们在后台会话中不受支持。
NSURLSessionDownloadTask : NSURLSessionDownloadTask 直接将响应数据写入一个临时文件。当应用程序未运行时,它支持后台下载。
下载任务以文件的形式检索数据,并在应用程序未运行时支持后台下载。
我想下图可以为您提供更好的知识:
文档回答了这个问题,但是:
NSURLSessionDownloadTask
将文件下载到磁盘,然后将生成的文件保存在某处以供以后使用。NSURLSessionDataTask
将文件下载到内存中,由您决定如何处理响应。添加到上面的答案
NSURLSessionDownloadTask可以取消下载任务并在稍后恢复它。
NSURLSessionDataTask我们以后不能恢复它。
我们可以从头文件中获取
/* * NSURLSessionDataTask 不提供任何额外的功能 * 超过 NSURLSessionTask 并且它的存在只是 * 提供与下载和上传任务的词汇区别。*/
@interface NSURLSessionDataTask : NSURLSessionTask
@end
/* * NSURLSessionUploadTask 目前不提供任何超越 NSURLSessionDataTask 的额外功能。所有可以发送引用 NSURLSessionDataTask 的委托消息 * 同样适用于 * NSURLSessionUploadTasks。*/
@interface NSURLSessionUploadTask : NSURLSessionDataTask
@end
/* * NSURLSessionDownloadTask 是一个代表下载到本地存储的任务。*/
@interface NSURLSessionDownloadTask : NSURLSessionTask
添加到以前的答案:Apple 在他们的指南“URL 加载系统”中明确表示
对于与远程服务器的小型交互,您可以使用 URLSessionDataTask 类将响应数据接收到内存中(与使用 URLSessionDownloadTask 类相反,后者将数据直接存储到文件系统中)。数据任务非常适合调用 Web 服务端点等用途。