8

XTubeManager で大量のクラッシュが発生しています (CFNetwork 内部のようです)。残念ながら、コンソール ログは利用できません。コール スタックのみです (以下を参照)。

質問:

  • アプリがバックグラウンドでクラッシュすることは想像できるので、コンソール ログは書き込まれません。その可能性はありますか?
  • backgroundTask の有効期限を別の方法で処理する必要がありNSURLRequestsますか? (以下のコードを参照)

バックグラウンド

私は定期的にバックグラウンドで (またはバックグラウンド プッシュを介して) 起動し、次のようなバックグラウンド タスクを実行しています。

NSString *myTaskName = @"some.random.task.name";
__block UIBackgroundTaskIdentifier taskID = [UIApplication.sharedApplication beginBackgroundTaskWithName:myTaskName expirationHandler:^{
    [UIApplication.sharedApplication endBackgroundTask:taskID];
    taskID = UIBackgroundTaskInvalid;
}];
dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(q,
    // doing some NSURLRequests stuff here
    [UIApplication.sharedApplication endBackgroundTask:taskID];
    taskID = UIBackgroundTaskInvalid;
});

これは通常、applicationDidEnterBackground

コールスタック

Thread : Crashed: com.apple.NSURLConnectionLoader
0  libobjc.A.dylib                0x183599b90 objc_msgSend + 16
1  CFNetwork                      0x184513300 XTubeManager::withTubeManager(CoreSchedulingSet const*, void (GlueTubeManager*) block_pointer) + 96
2  CFNetwork                      0x18451149c -[__NSURLSessionLocal _withConnectionCache_enqueueRequest:forProtocol:scheduling:options:] + 128
3  CFNetwork                      0x1845c3798 HTTPProtocol::asynchronouslyCreateAndOpenStream_WithMessage_AfterCookiesAndAuthenticatorHeaders(__CFHTTPMessage*) + 2000
4  CFNetwork                      0x1845c2ef8 HTTPProtocol::asynchronouslyAddAuthenticatorHeadersAndContinue(__CFHTTPMessage*) + 144
5  CFNetwork                      0x1845c4ba4 ___ZN12HTTPProtocol35asynchronouslyAddCookiesAndContinueEP15__CFHTTPMessage_block_invoke_2 + 28
6  libdispatch.dylib              0x18396d47c _dispatch_client_callout + 16
4

1 に答える 1

2

NSURLConnection スタック内の一部のオブジェクトが消えています。確認事項:

  • 接続を 2 回開始していないことを確認してください。( ... を使用しない場合はstartImmediately:NO、決して呼び出さないでくださいstart。)
  • 接続を開始してから、接続が完了する前に最後の参照を解放していないことを確認してください。
  • 同期 NSURLConnection 呼び出しを使用していないことを確認してください (これまで)。

それ以外にも、以前にも同様のクラッシュを見たことがありますが、多くの場合、明らかな原因はありません。クラッシュの頻度が高い場合を除き、バグを報告して、Apple がすべての人のために修正する方法を見つけ出すことを期待する以外に、修正する方法はないかもしれません。

于 2016-05-08T03:11:25.500 に答える