2013-08-21 11 views
5

Ich habe einen Bericht über einen Absturz mit unserer iPad-Anwendung erhalten, mit einer Protokollnachricht. Die letzten paar Zeilen der Protokollmeldung lauten wie folgt:Könnte jemand die Meldung "CoreAnimation: Timeout Zaun" erklären?

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 

Kann mir bitte jemand sagen, was diese Protokollmeldungen bedeuten? Ich konnte keine guten Informationen online finden.

Antwort

10

Dies bedeutet in der Regel, dass Kernanimationsvorgänge in die Warteschlange gestellt werden, jedoch zu lange ausstehen und das Zeitlimit überschritten wurde.

ein paar Dinge zu überprüfen:

  • Vergewissern Sie sich auf jeden -viewDidAppear und -viewWillAppear
  • die Super-Methode aufrufen Stellen Sie sicher, Sie nicht Animationen durchführen, bevor die Ansicht über -viewDidAppear
  • präsentiert Überprüfen Sie Interaktion mit der Benutzeroberfläche im Hauptthread. Ich habe Probleme mit Wartezaun-Nachricht beim Anzeigen eines UIAlertView gesehen, wenn der entsprechende Code in einem Hintergrundthread ausgeführt wurde. Sie können sicherstellen, indem Sie Ihren Code in einen Block und senden Sie es an den Haupt-Thread, Beispiel unter
  • Dies kann passieren, wenn Sie eine UIScollView haben, die viele Subviews hat und animieren Sie die UIScrollView. In diesem Fall werden alle Unteransichten animiert, auch wenn diese Untersichten nicht angezeigt werden. Siehe diese Antwort: https://stackoverflow.com/a/10938889/257550. Eine Lösung, um dies zu beheben, wäre die Neugestaltung der Ansicht, um eine UITableView zu verwenden, die sicherstellt, dass nur die Unteransichten in den sichtbaren Zellen animiert werden.

    dispatch_async(dispatch_get_main_queue(), ^{ 
    
        UIAlertView *alert = 
         [[UIAlertView alloc] initWithTitle:@"title", 
                mssage:@"message" 
               delegate:nil 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil]; 
    
        [alert show]; 
    }); 
    
2

Zuerst möchte Ich mag Michael G.Emmons für die Antwort danken. Das brachte mich in die richtige Richtung.

Das Problem war, ich rief den Dienst in (listView) viewWillApear, und in (detailsView) Ich speicherte die Details (Dienst wurde aufgerufen), entlassenAlert hatte eine Animation, wenn Sie wieder in der Liste Bildschirm (wieder) Die Animation wurde aufgerufen. Es wurde für eine gewisse Zeit aufgestapelt und warnte diese Warnung. Das Gerät verwendet, um ohne Log-Nachricht in Xcode-Konsole zu hängen und es war schwer zu debuggen.

Es funktionierte gut mit iOS (7), hatte Probleme mit iOS 8, in iPhone 6 Simulator und höher.

ich ein ähnliches Problem hatte, meine Konsolenprotokolle waren: : Coreanimation: timed Zaun E025 aus: Coreanimation: failed Zaun Antwort erhalten: 10004003

Lösung: Ich zog den Code (Serviceanrufe) angemessen von viewWillAppear zu ViewDidAppear und entfernt die unnötigen (Animationen).

Es löste mein Problem. Ich hoffe es hilft einigen.