回答

43

NSURLSessionDataTask:使用NSData的 數據任務交換數據。後臺會話中不支持NSURLSessionDataTask。

數據任務使用NSData對象發送和接收數據。數據任務適用於從應用程序到服務器的簡短交互式請求。數據任務可以在接收每一條數據後一次將數據返回給您的應用程序,或者通過完成處理程序一次全部返回數據。因爲數據任務不會將數據存儲到文件中,所以在後臺會話中不支持它們。

NSURLSessionDownloadTask: NSURLSessionDownloadTask直接將響應數據寫入臨時文件。它在應用程序未運行時支持後臺下載。

下載任務以文件形式檢索數據,並在應用程序未運行時支持後臺下載。

我想下面的圖片給你更好的瞭解:

enter image description here

+0

我終於有了最好使用'NSURLSessionDownloadTask'因爲我們可以有它的附加功能.. – NSPratik

+0

*由於數據的任務不將數據存儲到一個文件*這是什麼意思?他們不把它存儲到一個文件?!那麼在哪裏存儲?文件的形式是什麼意思?我覺得這是你答案的核心,有其他一些我不明白的先決條件。也許如果你分享真實世界的例子,那麼理解會變得更容易...... – Honey

16

該文檔回答這個問題,而是:

  • NSURLSessionDownloadTask下載文件到磁盤,然後保存生成的文件某處以後使用。
  • NSURLSessionDataTask將文件下載到內存中,由您來決定如何處理響應。
3

添加到上面的回答

  • NSURLSessionDownloadTask有可能取消下載任務,並在以後繼續點。

  • NSURLSessionDataTask我們不能恢復它以備後用。

0

我們可以從頭文件得到它

/* *一個NSURLSessionDataTask不超過一個NSURLSessionTask提供任何額外的* 的功能,它的存在僅僅是* 從下載提供詞彙分化上傳任務。*/

@interface NSURLSessionDataTask : NSURLSessionTask 
@end 

/* *一個NSURLSessionUploadTask目前不提供對一個NSURLSessionDataTask任何 額外*的功能。所有 委託消息*可能發送引用 NSURLSessionDataTask同樣將*應用於NSURLSessionUploadTasks。 */

@interface NSURLSessionUploadTask : NSURLSessionDataTask 
@end 

/* * NSURLSessionDownloadTask是代表一個下載到 *本地存儲的任務。 */

@interface NSURLSessionDownloadTask : NSURLSessionTask 
相關問題