Web サイトからファイルをダウンロードできる iOS アプリがあります。それらを管理するNSURLSession
クラスを作成しました。Downloads
このDownloads
クラスにはNSMutableArray
、オブジェクトを使用して現在および過去のすべてのダウンロードを追跡する がありDownloadItem
ます。私はこの設定に満足していません。
Downloads
現在、すべてのダウンロードのデリゲートとしてクラスを持たなければなりません。NSURLSessionDownloadTask
それぞれのデリゲートをDownloadItem
オブジェクトに割り当てる方法がわかりません。Downloads
そのため、それをオブジェクトに割り当てたままにDownloadItem
し、メッセージを転送する方法を決定する必要があります。
現在、これを行うには、で呼び出される NSMutableDictionary を作成しtasksDictionary
、をキーとしてDownloads
使用しtaskIdentifier
ます。
return [self.tasksDictionary objectForKey:[NSNumber numberWithInteger:task.taskIdentifier]];
これは機能しているように見えますが、最も効率的な方法ではないようです。また、最初に作成された taskIdentifier が0
、完了したタスクと最初のタスクの違いを識別するのが難しくなるのを見たことも心配しています。
これらのことを追跡するためのより良い方法はありますか? タスクに新しい代理人を割り当てる方法はありますか?