33

最新のアップルNSURLSessionでは、​​ の代わりに新しいものを導入しているため、異なるタスクがあり、NSURLConnectionの違いは何ですか?NSURLSessionDataTaskNSURLSessionDownloadTask

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

4

5 に答える 5

60

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

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

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

ダウンロード タスクは、ファイルの形式でデータを取得し、アプリが実行されていないときのバックグラウンド ダウンロードをサポートします。

以下の画像がより良い知識を与えると思います:

ここに画像の説明を入力

于 2013-12-16T06:59:19.283 に答える
0

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

/* * NSURLSessionDataTask は、NSURLSessionTask に * 追加の機能を提供するものではなく、その存在は * ダウンロードおよびアップロード タスクとの語彙的な差別化を提供するためのものです。*/

@interface NSURLSessionDataTask : NSURLSessionTask
@end

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

@interface NSURLSessionUploadTask : NSURLSessionDataTask
@end

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

@interface NSURLSessionDownloadTask : NSURLSessionTask
于 2016-09-18T09:47:42.697 に答える
0

以前の回答に追加:Appleはガイド「URL Loading System」で明確にしました

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

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

于 2020-01-15T16:01:38.263 に答える