最新のAppleはNSURLSession
の代わりに新しいNSURLConnection
を導入しているので、異なるタスクがあります。NSURLSessionDataTask
の違いは何ですか? NSURLSessionDownloadTask
?
どのシナリオでNSURLSessionTask
を使用し、どこでNSURLSessionDownloadTask
を使用しますか?
NSURLSessionDataTask:データタスクはNSDataを使用してデータを交換します。 NSURLSessionDataTaskは、バックグラウンドセッションではサポートされていません。
データタスクは、NSDataオブジェクトを使用してデータを送受信します。データタスクは、アプリからサーバーへの短い、多くの場合インタラクティブなリクエストを対象としています。データタスクは、各データの受信後に一度に1つずつ、または完了ハンドラーを介して一度にすべてのデータをアプリに返すことができます。データタスクはデータをファイルに保存しないため、バックグラウンドセッションではサポートされていません。
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サービスエンドポイントの呼び出しなどの用途に最適です。