インスタンスを無効にしようとすると奇妙な問題が発生しNSURLSession
ます。コードは非常に単純です。View Controller、2 つのボタン (start: と stop:)、および URL 用のテキスト フィールドがあります。
コードの簡単な抜粋:
- (IBAction)start:(id)sender {
NSURLSessionConfiguration *conf = [NSURLSessionConfiguration backgroundSessionConfiguration:@"conf"];
self.session = [NSURLSession sessionWithConfiguration:conf delegate:self delegateQueue:nil];
NSURLSessionDownloadTask *task = [self.session downloadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.url.text]]];
[task resume];
}
- (IBAction)cancel:(id)sender {
[self.session invalidateAndCancel];
}
または、必要に応じて、プロジェクト全体:リンク
ここで、ファイルをダウンロードしてみてください ( http://download.thinkbroadband.com/1GB.zip )。
このダウンロードをバックグラウンドで続行したいので、バックグラウンド セッションを使用しています。
セッションは正常に開始され、ダウンロードはバックグラウンドで続行されますが、キャンセルしようとすると (送信invalidateAndCancel
)、アクセスがうまくいきません。
ゾンビを有効にしてプロファイリングすると、次のゾンビ オブジェクトが得られます: _NSCFBackgroundDownloadTask
.
したがって、NSURLSessionDownloadTask
(強力なプロパティを使用して保存する)を保持すると、不正なアクセスは発生しません。しかし、私の知る限り、NSURLSession はそれ自体のタスクを保持する必要があるため、コードの何が問題なのか (ドキュメントに何か不足している可能性がありますか?)、またはバグレポートを提出する必要があるかどうかを理解したいと思います。
ありがとう