web-dev-qa-db-ja.com

NSURLSessionDataTaskとNSURLSessionDownloadTaskの違いは何ですか

最新のAppleはNSURLSessionの代わりに新しいNSURLConnectionを導入しているので、異なるタスクがあります。NSURLSessionDataTaskの違いは何ですか? NSURLSessionDownloadTask

どのシナリオでNSURLSessionTaskを使用し、どこでNSURLSessionDownloadTaskを使用しますか?

28
Toseef Khilji

NSURLSessionDataTask:データタスクはNSDataを使用してデータを交換します。 NSURLSessionDataTaskは、バックグラウンドセッションではサポートされていません。

データタスクは、NSDataオブジェクトを使用してデータを送受信します。データタスクは、アプリからサーバーへの短い、多くの場合インタラクティブなリクエストを対象としています。データタスクは、各データの受信後に一度に1つずつ、または完了ハンドラーを介して一度にすべてのデータをアプリに返すことができます。データタスクはデータをファイルに保存しないため、バックグラウンドセッションではサポートされていません。

NSURLSessionDownloadTask:NSURLSessionDownloadTaskは、応答データを一時ファイルに直接書き込みます。アプリが実行されていないときのバックグラウンドダウンロードをサポートします。

ダウンロードタスクは、ファイルの形式でデータを取得し、アプリの実行中にバックグラウンドダウンロードをサポートします。

下の画像はあなたにもっと良い知識を与えると思います:

enter image description here

48
Toseef Khilji

ドキュメントはこれに答えますが、:

  • NSURLSessionDownloadTaskはファイルをディスクにダウンロードし、結果のファイルを後で使用するためにどこかに保存します。
  • NSURLSessionDataTaskはメモリ内のファイルをダウンロードし、応答をどのように処理するかを決定するのはあなた次第です。
18
zadr

上記の回答に追加

  • NSURLSessionDownloadTaskダウンロードタスクをキャンセルして、後で再開することができます。

  • NSURLSessionDataTask後で再開することはできません。

3
Ankit garg

ヘッダーファイルから取得できます

/ * * NSURLSessionDataTaskは、NSURLSessionTaskに追加の機能を提供しません。*その存在は、ダウンロードおよびアップロードタスクとの語彙の区別を提供するためだけです。 * /

@interface NSURLSessionDataTask : NSURLSessionTask
@end

/ * * NSURLSessionUploadTaskは現在、NSURLSessionDataTaskに*追加の機能を提供していません。 NSURLSessionDataTaskを参照して送信される可能性のあるすべてのデリゲートメッセージは、NSURLSessionUploadTasksに等しく適用されます。 * /

@interface NSURLSessionUploadTask : NSURLSessionDataTask
@end

/ * * NSURLSessionDownloadTaskは、ローカルストレージへのダウンロードを表すタスクです。 * /

@interface NSURLSessionDownloadTask : NSURLSessionTask
0
Victor Choy

以前の回答に追加:Appleは、ガイド「URL読み込みシステム」で明確にしています

リモートサーバーとの小さなやり取りの場合は、URLSessionDataTaskクラスを使用して応答データをメモリに受信できます(データをファイルシステムに直接格納するURLSessionDownloadTaskクラスを使用するのとは対照的です)。データタスクは、Webサービスエンドポイントの呼び出しなどの用途に最適です。

https://developer.Apple.com/documentation/foundation/url_loading_system/fetching_website_data_into_memory#overview

0
Dustt