5

ログ メッセージが添付された、i​​Pad アプリケーションのクラッシュのレポートを受け取りました。ログ メッセージの最後の数行は次のとおりです。

Aug 21 08:58:51 2TesterPad backboardd[26] <Warning>: CoreAnimation: timed out fence 25993
Aug 21 08:58:51 2TesterPad backboardd[26] <Warning>: CoreAnimation: updates deferred for too long
Aug 21 08:58:52 2TesterPad AppName[2428] <Warning>: CoreAnimation: failed to receive fence reply: 10004003

これらのログ メッセージの意味を教えてください。これに関する良い情報をオンラインで見つけることができませんでした。

4

2 に答える 2

10

これは通常、コア アニメーション操作がキューに入れられているが、保留時間が長すぎてタイムアウトしたことを意味します。

いくつかの確認事項:

  • -viewDidAppearいずれかでスーパーメソッドを呼び出していることを確認してください-viewWillAppear
  • ビューが表示される前にアニメーションを実行していないことを確認してください-viewDidAppear
  • メイン スレッドで UI のみを操作していることを確認します。関連するコードがバックグラウンド スレッドで実行されたときに UIAlertView を表示すると、待機フェンス メッセージに関する問題が発生しました。以下の例のように、コードをブロックに入れてメインスレッドに送信することで確認できます。
  • これUIScollViewは、多数のサブビューを持つ があり、 をアニメートする場合に発生する可能性がありますUIScrollView。この場合、サブビューが画面上になくても、すべてのサブビューをアニメーション化します。この回答を参照してください: https://stackoverflow.com/a/10938889/257550。これを修正する 1 つの解決策は、ビューを再設計して、表示されているUITableViewセルのサブビューのみがアニメーション化されるようにすることです。

    dispatch_async(dispatch_get_main_queue(), ^{
    
        UIAlertView *alert = 
           [[UIAlertView alloc] initWithTitle:@"title", 
                                       mssage:@"message"
                                     delegate:nil 
                            cancelButtonTitle:@"OK"
                            otherButtonTitles:nil];
    
        [alert show];
    });
    
于 2013-08-21T19:09:20.720 に答える
2

まず、答えてくれた Michael G.Emmons に感謝します。それは私を正しい方向に導きました。

問題は、(listView)viewWillApearでサービスを呼び出していて、(detailsView)で詳細を保存していた(サービスが呼び出された)、dismissAlertにアニメーションがあり、リスト画面に戻ったときに(再び)アニメーションが呼び出されたことです. 何らかの理由で積み上げられ、この警告がスローされました。Xcode コンソールにログ メッセージが表示されずにデバイスがハングすることがあり、デバッグが困難でした。

iOS (7) では正常に動作し、iOS 8 では問題があり、iPhone 6 シミュレーター以降では問題がありました。

私は同様の問題を抱えていました.私のコンソールログは次のとおりでした:

解決策: コード (サービス コール) を適切に viewWillAppear から viewDidAppear に移動し、不要な (アニメーション) を削除しました。

それは私の問題を解決しました。少しでもお役に立てば幸いです。

于 2014-10-09T10:35:32.443 に答える