Wie kann ich die Umgebungsvariable CG_CONTEXT_SHOW_BACKTRACE festlegen?

90

Ich habe drei Schaltflächen in meiner Ansicht. Nach dem Setzen des CornerRadus in viewDidLoad (): button.layer.cornerRadius = 20Im Protokoll wird folgende Fehlermeldung angezeigt :

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

Fragen:

  • Wie kann ich die Umgebungsvariable CG_CONTEXT_SHOW_BACKTRACE festlegen?
  • Oder wie kann ich diese Warnung beheben?

Okay, ich habe jetzt die Rückverfolgung von der Nachricht. Das ergibt für mich keinen Sinn. Bitte helfen Sie ...

Aug  7 14:27:00  <Error>: CGContextSaveGState: invalid context 0x0. Backtrace:
      <-[UIStatusBarItemView updateContentsAndWidth]+33>
       <-[UIStatusBarItemView initWithItem:data:actions:style:]+477>
        <+[UIStatusBarItemView createViewForItem:withData:actions:foregroundStyle:]+134>
         <-[UIStatusBarLayoutManager _createViewForItem:withData:actions:]+163>
          <-[UIStatusBarLayoutManager _prepareEnabledItemType:withEnabledItems:withData:actions:itemAppearing:itemDisappearing:]+36
           <-[UIStatusBarLayoutManager prepareEnabledItems:withData:actions:]+92>
            <-[UIStatusBarForegroundView _setStatusBarData:actions:animated:]+797>
             <-[UIStatusBarForegroundView setStatusBarData:actions:animated:]+332>
              <__51-[UIStatusBar _prepareToSetStyle:animation:forced:]_block_invoke+360>
               <+[UIView(Animation) performWithoutAnimation:]+65>
                <-[UIStatusBar _prepareToSetStyle:animation:forced:]+866>
                 <-[UIStatusBar _requestStyleAttributes:animationParameters:forced:]+391>
                  <-[UIStatusBar requestStyle:animationParameters:forced:]+437>
                   <-[UIStatusBar requestStyle:animated:forced:]+90>
                    <-[UIStatusBar _evaluateServerRegistration]+250>
                     <__45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke+590>
                      <-[UIView(Hierarchy) _postMovedFromSuperview:]+544>
                       <-[UIView(Internal) _addSubview:positioned:relativeTo:]+1967>
                        <-[UIStatusBarWindow setStatusBar:]+288>
                         <-[UIApplication _createStatusBarWithRequestedStyle:orientation:hidden:]+340>
                          <-[UIApplication _runWithMainScene:transitionContext:completion:]+950>
                           <-[UIApplication workspaceDidEndTransaction:]+188>
                            <-[FBSSerialQueue _performNext]+192>
                             <-[FBSSerialQueue _performNextFromRunLoopSource]+45>
                              <__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__+17>
                               <__CFRunLoopDoSources0+556>
                                <__CFRunLoopRun+867>
                                 <CFRunLoopRunSpecific+488>
                                  <-[UIApplication _run]+402>
                                   <UIApplicationMain+171>
                                    <main+117>



Aug  7 14:27:00  <Error>: CGContextTranslateCTM: invalid context 0x0. Backtrace:
      <-[UIStatusBarItemView updateContentsAndWidth]+33>
       <-[UIStatusBarItemView initWithItem:data:actions:style:]+477>
        <+[UIStatusBarItemView createViewForItem:withData:actions:foregroundStyle:]+134>
         <-[UIStatusBarLayoutManager _createViewForItem:withData:actions:]+163>
          <-[UIStatusBarLayoutManager _prepareEnabledItemType:withEnabledItems:withData:actions:itemAppearing:itemDisappearing:]+36
           <-[UIStatusBarLayoutManager prepareEnabledItems:withData:actions:]+92>
            <-[UIStatusBarForegroundView _setStatusBarData:actions:animated:]+797>
             <-[UIStatusBarForegroundView setStatusBarData:actions:animated:]+332>
              <__51-[UIStatusBar _prepareToSetStyle:animation:forced:]_block_invoke+360>
               <+[UIView(Animation) performWithoutAnimation:]+65>
                <-[UIStatusBar _prepareToSetStyle:animation:forced:]+866>
                 <-[UIStatusBar _requestStyleAttributes:animationParameters:forced:]+391>
                  <-[UIStatusBar requestStyle:animationParameters:forced:]+437>
                   <-[UIStatusBar requestStyle:animated:forced:]+90>
                    <-[UIStatusBar _evaluateServerRegistration]+250>
                     <__45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke+590>
                      <-[UIView(Hierarchy) _postMovedFromSuperview:]+544>
                       <-[UIView(Internal) _addSubview:positioned:relativeTo:]+1967>
                        <-[UIStatusBarWindow setStatusBar:]+288>
                         <-[UIApplication _createStatusBarWithRequestedStyle:orientation:hidden:]+340>
                          <-[UIApplication _runWithMainScene:transitionContext:completion:]+950>
                           <-[UIApplication workspaceDidEndTransaction:]+188>
                            <-[FBSSerialQueue _performNext]+192>
                             <-[FBSSerialQueue _performNextFromRunLoopSource]+45>
                              <__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__+17>
                               <__CFRunLoopDoSources0+556>
                                <__CFRunLoopRun+867>
                                 <CFRunLoopRunSpecific+488>
                                  <-[UIApplication _run]+402>
                                   <UIApplicationMain+171>
                                    <main+117>




Aug  7 14:27:00 <Error>: CGContextRestoreGState: invalid context 0x0. Backtrace:
      <-[UIStatusBarItemView updateContentsAndWidth]+33>
       <-[UIStatusBarItemView initWithItem:data:actions:style:]+477>
        <+[UIStatusBarItemView createViewForItem:withData:actions:foregroundStyle:]+134>
         <-[UIStatusBarLayoutManager _createViewForItem:withData:actions:]+163>
          <-[UIStatusBarLayoutManager _prepareEnabledItemType:withEnabledItems:withData:actions:itemAppearing:itemDisappearing:]+36
           <-[UIStatusBarLayoutManager prepareEnabledItems:withData:actions:]+92>
            <-[UIStatusBarForegroundView _setStatusBarData:actions:animated:]+797>
             <-[UIStatusBarForegroundView setStatusBarData:actions:animated:]+332>
              <__51-[UIStatusBar _prepareToSetStyle:animation:forced:]_block_invoke+360>
               <+[UIView(Animation) performWithoutAnimation:]+65>
                <-[UIStatusBar _prepareToSetStyle:animation:forced:]+866>
                 <-[UIStatusBar _requestStyleAttributes:animationParameters:forced:]+391>
                  <-[UIStatusBar requestStyle:animationParameters:forced:]+437>
                   <-[UIStatusBar requestStyle:animated:forced:]+90>
                    <-[UIStatusBar _evaluateServerRegistration]+250>
                     <__45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke+590>
                      <-[UIView(Hierarchy) _postMovedFromSuperview:]+544>
                       <-[UIView(Internal) _addSubview:positioned:relativeTo:]+1967>
                        <-[UIStatusBarWindow setStatusBar:]+288>
                         <-[UIApplication _createStatusBarWithRequestedStyle:orientation:hidden:]+340>
                          <-[UIApplication _runWithMainScene:transitionContext:completion:]+950>
                           <-[UIApplication workspaceDidEndTransaction:]+188>
                            <-[FBSSerialQueue _performNext]+192>
                             <-[FBSSerialQueue _performNextFromRunLoopSource]+45>
                              <__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__+17>
                               <__CFRunLoopDoSources0+556>
                                <__CFRunLoopRun+867>
                                 <CFRunLoopRunSpecific+488>
                                  <-[UIApplication _run]+402>
                                   <UIApplicationMain+171>
                                    <main+117>
l1ghthouse
quelle
4
Der Titel der Frage und die (bearbeitete) Frage stimmen nicht überein. @utogaria gab Ihnen die ursprüngliche richtige Antwort.
Aleksa

Antworten:

81

Es ist ein Fehler in 9b5:
https://forums.developer.apple.com/thread/13683

Legen Sie ein RADAR bei Apple ab.

Greg Robertson
quelle
30
Dieser Fehler ist in Xcode 7.0 (7A220) weiterhin vorhanden. Es ist leicht reproduzierbar, indem Sie ein neues leeres Projekt erstellen und UIViewControllerBasedStatusBarAppearance in info.plist auf NO setzen.
Vorstand
13
In dem oben genannten Link hat ein Apple-Mitarbeiter gerade geantwortet: "Die Hauptursache für die Fehlermeldungen ist ein Problem mit iOS, wenn eine App einige Statusleistentypen verwendet, z. B." Versteckt "." Und "Sie können diese Warnung ignorieren. ""
Samthui7
2
Ich beobachte das gleiche Problem unter iOS 9.2undXcode 7.2
Mohamed Saleh
140

Über dieses Menü können Sie eine Umgebungsvariable festlegen: Produkt -> Schema -> Schema bearbeiten. Suchen Sie unter dem Element "Ausführen" die Registerkarte "Argumente". Auf der Registerkarte "Hinzufügen" wird "Umgebungsvariablen" angezeigt CG_CONTEXT_SHOW_BACKTRACEund der Wert auf "JA" gesetzt.

Utogaria
quelle
1
Vielen Dank, dies zeigt die gesamte Rückverfolgung von CG Context ... Es stellt sich heraus, dass es nichts mit meinen Schaltflächen zu tun hat. Es ist das UIStatusBarItemView.
l1ghthouse
3
Könnten Sie versuchen, Ihre xib / storyboard-Datei noch einmal zu überprüfen und festzustellen, ob für eines der benutzerdefinierten UIButton-, UIBarButtonItem- usw. Hintergrundbilder festgelegt sind? Wenn das Bild nicht richtig festgelegt ist (Bilddatei fehlt usw.), kann es auch generiert werden Warnungen wie Sie.
Utogaria
Doppelte Überprüfung .. alle Bilder sind korrekt eingerichtet .. sie sind alle in den Assets.xcassets Ich habe sogar die Schaltflächen entfernt .. der gleiche Fehler erscheint immer wieder ..
l1ghthouse
1
Es gibt noch eine andere Sache, die Sie versuchen können. Gehen Sie in Xcode zu "Haltepunktnavigator" und fügen Sie einen "Ausnahme-Haltepunkt" hinzu. Führen Sie die App aus und prüfen Sie, ob sie einen Ausnahmeunterbrechungspunkt auslöst. In diesem Fall können Sie möglicherweise genauer sehen, was passiert.
Utogaria
Wenn es funktioniert, ist es ein sehr guter Gedanke, um den Fehler in Bezug auf UI-Teile zu debuggen.
Arpit B Parekh
29

Dieses Problem tritt bei Xcode 7 auf. In meinem Fall habe ich das UIViewControllerBasedStatusBarAppearanceaus entfernt Info.plistund das Problem gelöst! Siehe die Antwort in diesem Beitrag :

Weles
quelle
Ihre Lösung hat auch für mich funktioniert. Was ist, wenn die UIStatusbar weiß bleiben soll?
SwiftBoy
Ich würde es nicht als "Fix" betrachten, da ich dachte, die meisten Leute, die UIViewControllerBasedStatusBarAppearancenur eingestellt haben, weil sie es brauchten, aber es stellte sich heraus, dass ich falsch lag, da diese Antwort 19 positive Stimmen hat: p
superarts.org
Ja, ich stimme dir zu. Ich habe die Lösung gefunden, um die Farbe der Statusleiste in diesem Link zu ändern: stackoverflow.com/a/32675066/1095530
Weles
Ich arbeite hier nicht, und einige Leute brauchen dies in der Liste, da die frühere Art, die Statusleiste auszublenden, jetzt veraltet ist
Thibaut Noah
-6

Auf Xcode 7:

Wenn Sie weiterhin möchten, dass die Statusleiste ausgeblendet ist, ändern Sie einfach UIViewControllerBasedStatusBarAppearancedie Info.plistDatei in View controller-based status bar appearance. Vergessen Sie nicht, es durch einzustellenNO

Nghia Luong
quelle
2
Das macht keinen Sinn; UIViewControllerBaseStatusBarAppearanceund View controller-based status bar appearancesind das gleiche auf der Info.plist. Einer ist der Schlüsselwert und der andere der dem Benutzer zugewandte Text.
esttorhe