0

NSURLSession のバックグラウンド アップロードを使用しようとしてきましたが、時々このクラッシュが発生します。

Sep 25 10:01:48 ipad backboardd[29] <Warning>: MyApp[11829] has active assertions beyond permitted time: 
{(
    <BKProcessAssertion: 0x166b1770> identifier: com.apple.nsnetworkd.handlesession process: MyApp[11829] permittedBackgroundDuration: 30.000000 reason: backgroundDownload owner pid:8440 preventSuspend  preventThrottleDownUI  preventIdleSleep  preventSuspendOnSleep 
)}

コードをデバッグすると、クラッシュが発生したときにapplication: handleEventsForBackgroundURLSession:completionHandler:メソッドが呼び出され、そこでセッションを再作成し、Apple ドキュメントが推奨するように完了ハンドラーを保存することがわかりましたが、タスク終了のデリゲートは決して呼び出されず、どちらも呼び出されませんURLSessionDidFinishEventsForBackgroundURLSession:。クラッシュは、NSURLSession デリゲートでアップロードの終了を処理した後に完了ハンドラーを呼び出すためです。

デリゲートが呼び出されない理由を誰か教えてもらえますか?

4

1 に答える 1

1

コードのバグにより、完了ハンドラーが 2 回呼び出されることがありました。次にアプリが起動されたとき、デリゲートが呼び出されなかったため、完了ハンドラーも呼び出されず、クラッシュが発生しました

于 2014-09-26T18:50:41.713 に答える