2015-09-09 11 views
40

Ich habe dieses Problem, nachdem ich meinen Code mit Xcode 7 GM kompiliert habe.CGContextSaveGState: ungültiger Kontext 0x0 (Xcode 7 GM)

Laut Apple ist dies ein Fehler, aber es scheint immer noch ein Problem zu sein. Alles funktioniert gut, aber ist es möglich, diese Fehler loszuwerden?

: CGContextSaveGState: ungültiger Kontext 0x0. Wenn Sie das Backtrace sehen möchten, legen Sie die Umgebungsvariable CG_CONTEXT_SHOW_BACKTRACE fest.

: CGContextTranslateCTM: ungültiger Kontext 0x0. Wenn Sie das Backtrace sehen möchten, legen Sie die Umgebungsvariable CG_CONTEXT_SHOW_BACKTRACE fest.

: CGContextRestoreGState: ungültiger Kontext 0x0. Wenn Sie das Backtrace sehen möchten, legen Sie die Umgebungsvariable CG_CONTEXT_SHOW_BACKTRACE fest.

enter image description here

Jemand in anderen Foren sagte etwas über Statusleiste, aber ich habe keinen Erfolg, die Nachricht zu beseitigen. Das ist kein großes Problem, aber es ist ein nutzloser "Fehler". Ich benutze den Interface Builder.

Aktualisiert: Früher habe ich Objective-C, wenn Sie verwenden Swift, maybe this is the question you're looking for

+0

Mögliche Duplikate von [CGContextSaveGState: ungültiger Kontext 0x0 Fehler nur auf dem Gerät] (http://stackoverflow.com/questions/32236204/cgcontextsavegstate-invalid-context-0x0-error-only-on-device) –

Antwort

55

Dies gilt auch für mich am 7. GM passiert, aber UIViewControllerBasedStatusBarAppearance von Info.plist Entfernen regelte es für mich, als here sagte.

Update: Warnung scheint mit iOS 9.2

+6

Hallo Ernesto, Ihre Lösung hat aber auch für mich funktioniert, wenn ich möchte, dass die UIStatusbar weiß bleibt? Haben Sie eine Lösung gefunden, damit die Statusleiste ohne diese Fehler weiß bleibt? –

+0

Hallo, ich weiß nicht, was du genau mit 'weiß' meinst, aber das Entfernen von 'UIViewControllerBasedStatusBarAppearance' bedeutet, dass das Aussehen der Statusleiste nun vom sichtbaren View-Controller bestimmt wird, du musst ['preferredStatusBarStyle'] implementieren (https : //developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/preferredStatusBarStyle) und geben den gewünschten Wert zurück. Beachten Sie, dass Sie, wenn Ihr Inhaltsansicht-Controller in einen Navigations-/Tab-Controller eingebettet ist, diesen in letzterem implementieren müssen. – ernesto

+1

Das funktioniert nur, wenn das automatische Layout aktiviert ist. Wenn Sie es deaktiviert haben und UIViewControllerBasedStatusBarAppearance nicht verwenden können, können Sie den Text der Statusleiste praktisch nicht in "light" ändern. –

7

Ich habe heute für diesen Fehler eine andere Ursache gefunden gegangen zu werden.

Wenn ich in meiner View Controller-Klasse Zeichnungscode schrieb, traten diese Fehler auf. Ich erkannte, dass ich eine UIView-Unterklasse erstellen und die Zeichenschritte in der override drawRect-Funktion ausführen muss. Als ich den Zeichnungscode dorthin verschoben habe, sind alle Fehler verschwunden.

+0

Alter, du hast mich gerade gerettet! Vielen Dank! Ich muss nur sagen, dass es in Swift 4.0 das Zeichen (_ rect: CGRect) ist, das überschrieben werden muss. –

2

Dies ist ein guter Fall, den Debugger zu verwenden. Ich habe einen Haltepunkt in meinem main gesetzt und dann die Taste F7 verwendet, um durch den Code zu gehen, bis die Warnung erschien. Es stellte sich heraus, gibt es noch eine andere Möglichkeit, dies gefälschte Fehlermeldung angezeigt:

NSColor *myColor = colorFromRGBA(43,51,59,0.95); 
[myColor set]; 
(self.window).backgroundColor = myColor; 

Es wurde auf [myColor set] die Warnung erzeugt wird. Offensichtlich brauchte ich das nicht und sagte es aus. An diesem Punkt ging der Fehler weg. Ihre Erfahrung kann natürlich abweichen.

+0

Das war auch mein Problem, außer dass ich [path stroke] auf einem UIBezierPath verwendete. Das ist der Code, der dieses Protokoll für mich generiert hat. –

-3

Starten Sie das Gerät neu. Es hat mein Problem behoben.

5

Ich zeichne UIBezierPath

mit path.fill() die Warnung entfernt Entfernen.

+0

Fixed for me.Thanks +1 – tobeiosdev