web-dev-qa-db-de.com

CGContextSaveGState: ungültiger Kontext 0x0 Fehler nur auf dem Gerät

pdate: Ich verwende XCode 7 Beta mit Swift 2.

Wenn ich versuche, meine App auf einem iPhone auszuführen, werden folgende 3 Fehler angezeigt:

<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

Wenn ich die Variable CG_CONTEXT_SHOW_BACKTRACE aktiviere, erhalte ich Folgendes:

Backtrace:
      <<redacted>+40>
       <<redacted>+432>
        <<redacted>+144>
         <<redacted>+172>
          <<redacted>+332>
           <<redacted>+112>
            <<redacted>+820>
             <<redacted>+688>
              <<redacted>+356>
               <<redacted>+80>
                <<redacted>+808>
                 <<redacted>+344>
                  <<redacted>+420>
                   <<redacted>+104>
                    <<redacted>+284>
                     <<redacted>+556>
                      <<redacted>+504>
                       <<redacted>+1792>
                        <<redacted>+220>
                         <<redacted>+284>
                          <<redacted>+920>
                           <<redacted>+168>
                            <<redacted>+184>
                             <<redacted>+56>
                              <<redacted>+24>
                               <<redacted>+540>
                                <<redacted>+724>
                                 <CFRunLoopRunSpecific+384>
                                  <<redacted>+460>
                                   <UIApplicationMain+204>
                                    <main+164>

Ich bin nicht sicher, wie ich das interpretieren soll, ich verwende keinen CoreGraphics-Inhalt in meinem Code und die anderen ähnlichen Fragen hatten Antworten, die für mich nicht funktionierten. Ich verstehe, dass es schwierig sein kann, beim Debuggen ohne Code zu helfen, aber ich kann nicht herausfinden, welcher Code damit zusammenhängt. Wenn also jemand eine Idee hat, kann ich mehr Code posten.

26
mattgabor

Nach meinen Experimenten liegt dies an der Definition von UIViewControllerBasedStatusBarAppearance in Info.plist.

Es passiert unter iOS 9 (Beta & GM), aber nicht unter 8.4.

52
Mark Krenek

Auf @ JimRotas Vorschlag, dies in eine Antwort umzuwandeln, da dies als hilfreich erachtet wurde:

Hatte dies noch in XCode 7 GM, iOS9 GM. Aber probieren Sie es aus: Setzen Sie UIViewControllerBasedStatusBarAppearance auf YES (obwohl die Statusleiste ausgeblendet ist, weshalb ich sie zunächst auf NO gesetzt habe), und die Warnungen werden ausgeblendet. Verrückt!

Ich musste dies dann zu meinen Ansichtscontrollern hinzufügen, um die Statusleiste auszublenden:

- (BOOL) prefersStatusBarHidden
{
    return YES;
}

Für mich erben alle meine VCs tatsächlich vom ProjectNameViewController, was es ein wenig vereinfacht hat.

11
Olie

ich bekomme das Gleiche auf dem Xcode 7 GM Release, ich denke, ich ignoriere sie einfach, da alles funktioniert, aber es ist ziemlich ärgerlich, obwohl sie zugegeben haben, dass es ein Fehler ist und ihn noch nicht behoben haben. - Dev Forum Posting

2
user3099837

nach den oben gegebenen Kommentaren ist dies der wahre Weg, um Folgendes zu beheben:

UIViewControllerBasedStatusBarAppearance to YES in Info.plist
2
Logic

Ich erhalte dies auch (einschließlich des überarbeiteten Teils), wenn ich mein Projekt auf iOS9 Beta5 kompiliere. Es ist in Ordnung, wenn es unter iOS8 kompiliert wird.

Dies geschieht direkt in meinem App-Delegaten, bevor Befehle von ausgeführt werden

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

es scheint also eher ein iOS-Beta-Problem zu sein als unseres.

1
Peter Johnson

Ich hatte die gleiche Art von Fehler, wenn ich nicht ganzzahlige Werte als Einfügungen für Bilder mit veränderbarer Größe verwendete:

UIImage * image = [[UIImage imageNamed:@"pill"]
             resizableImageWithCapInsets:UIEdgeInsetsMake(17.5, 17.5, 17.5, 17.5)];

Dies verursachte diese Art von Protokollen. Die Verwendung von Ganzzahlen behebt das Problem.

0
madewulf