最新のアップルNSURLSession
では、 の代わりに新しいものを導入しているため、異なるタスクがあり、NSURLConnection
の違いは何ですか?NSURLSessionDataTask
NSURLSessionDownloadTask
どのシナリオNSURLSessionTask
で、どこで使用しNSURLSessionDownloadTask
ますか?
最新のアップルNSURLSession
では、 の代わりに新しいものを導入しているため、異なるタスクがあり、NSURLConnection
の違いは何ですか?NSURLSessionDataTask
NSURLSessionDownloadTask
どのシナリオNSURLSessionTask
で、どこで使用しNSURLSessionDownloadTask
ますか?
NSURLSessionDataTask : データ タスクは NSData を使用してデータを交換します。NSURLSessionDataTask は、バックグラウンド セッションではサポートされていません。
データ タスクは、NSData オブジェクトを使用してデータを送受信します。データ タスクは、アプリからサーバーへの短い、多くの場合インタラクティブな要求を対象としています。データ タスクは、各データの受信後に一度に 1 つずつデータをアプリに返すか、完了ハンドラーを介して一度にすべてを返すことができます。データ タスクはデータをファイルに保存しないため、バックグラウンド セッションではサポートされません。
NSURLSessionDownloadTask : NSURLSessionDownloadTask は、応答データを一時ファイルに直接書き込みます。アプリが実行されていないときのバックグラウンド ダウンロードをサポートします。
ダウンロード タスクは、ファイルの形式でデータを取得し、アプリが実行されていないときのバックグラウンド ダウンロードをサポートします。
以下の画像がより良い知識を与えると思います:
ヘッダーファイルから取得できます
/* * NSURLSessionDataTask は、NSURLSessionTask に * 追加の機能を提供するものではなく、その存在は * ダウンロードおよびアップロード タスクとの語彙的な差別化を提供するためのものです。*/
@interface NSURLSessionDataTask : NSURLSessionTask
@end
/* * NSURLSessionUploadTask は現在、NSURLSessionDataTask に * 追加機能を提供していません。* NSURLSessionDataTask を参照して送信されるすべてのデリゲート メッセージは、 * NSURLSessionUploadTasks にも同様に適用されます。*/
@interface NSURLSessionUploadTask : NSURLSessionDataTask
@end
/* * NSURLSessionDownloadTask は、* ローカル ストレージへのダウンロードを表すタスクです。*/
@interface NSURLSessionDownloadTask : NSURLSessionTask
以前の回答に追加:Appleはガイド「URL Loading System」で明確にしました
リモート サーバーとの小規模なやり取りの場合は、URLSessionDataTask クラスを使用して応答データをメモリに受信できます (データをファイル システムに直接格納する URLSessionDownloadTask クラスを使用するのとは対照的です)。データ タスクは、Web サービス エンドポイントの呼び出しなどの用途に最適です。