1
次のコードでネットワークアクティビティのバックグラウンドセッションを使用します。しかし、以下のクラッシュログでエラーが発生しました。iOS - 完了ハンドラブロックは、バックグラウンドセッションではサポートされていません。デリゲートを代わりに使用する
完了ハンドラブロックは、バックグラウンドセッションではサポートされません。 代わりに代理人を使用してください。
この問題を解決するためのポインタを提供してください。
NSURLSessionConfiguration* config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier];
config.sessionSendsLaunchEvents = YES;
config.allowsCellularAccess = YES;
config.discretionary = YES;
NSURLSession* session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
NSURLSessionDownloadTask* downloadTask = [session downloadTaskWithRequest:request];
[downloadTask resume];
クラッシュログ
0 CoreFoundation __exceptionPreprocess + 120
1 libobjc.A.dylib objc_exception_throw + 52
2 CFNetwork -[__NSURLBackgroundSession validateSerializabilityForRequest:completion:] + 196
3 CFNetwork -[__NSURLBackgroundSession _onqueue_downloadTaskForRequest:resumeData:completion:] + 48
4 CFNetwork __90-[__NSURLBackgroundSession downloadTaskForRequest:downloadFilePath:resumeData:completion:]_block_invoke + 32
5 CFNetwork __68-[__NSURLBackgroundSession performBlockOnQueueAndRethrowExceptions:]_block_invoke + 72
6 libdispatch.dylib _dispatch_client_callout + 12
7 libdispatch.dylib _dispatch_barrier_sync_f_invoke + 80
8 CFNetwork -[__NSURLBackgroundSession performBlockOnQueueAndRethrowExceptions:] + 148
9 CFNetwork -[__NSURLBackgroundSession downloadTaskForRequest:downloadFilePath:resumeData:completion:] + 188
! 10 -[CRNSURLSessionTaskProxy initDownloadTaskWithSession:request:completionHandler:dispatch:] + 152
11 -[CRNSURLSessionProxy downloadTaskWithRequest:completionHandler:] + 108
12 -[CRNSURLSessionProxy downloadTaskWithRequest:] + 20
あなたはその後、ここで説明されているデリゲートメソッドを実装して、あなたのdownloadTask にデリゲートを追加する必要が