CGContextSaveGState: недопустимый контекст 0x0 при запуске приложения

Я установил CG_CONTEXT_SHOW_BACKTRACE переменную окружения YES, потому что у меня была следующая ошибка CGContextSaveGState: invalid context 0x0.

Следующий стек не очень помог мне.

<Error>: CGContextSaveGState: invalid context 0x0. Backtrace:
      <-[UIStatusBarBatteryItemView contentsImage]+773>
       <-[UIStatusBarItemView updateContentsAndWidth]+36>
        <-[UIStatusBarItemView initWithItem:data:actions:style:]+503>
         <+[UIStatusBarItemView createViewForItem:withData:actions:foregroundStyle:]+159>
          <-[UIStatusBarLayoutManager _createViewForItem:withData:actions:]+168>
           <-[UIStatusBarLayoutManager _prepareEnabledItemType:withEnabledItems:withData:actions:itemAppearing:itemDisappearing:]+3
            <-[UIStatusBarLayoutManager prepareEnabledItems:withData:actions:]+108>
             <-[UIStatusBarForegroundView _setStatusBarData:actions:animated:]+951>
              <-[UIStatusBarForegroundView setStatusBarData:actions:animated:]+874>
               <__51-[UIStatusBar _prepareToSetStyle:animation:forced:]_block_invoke+443>
                <+[UIView(Animation) performWithoutAnimation:]+82>
                 <-[UIStatusBar _prepareToSetStyle:animation:forced:]+935>
                  <-[UIStatusBar _requestStyleAttributes:animationParameters:forced:]+404>
                   <-[UIStatusBar requestStyle:animationParameters:forced:]+490>
                    <-[UIStatusBar requestStyle:animated:forced:]+113>
                     <-[UIStatusBar forceUpdateStyleOverrides:]+97>
                      <-[UIStatusBar _evaluateServerRegistration]+294>
                       <-[UIStatusBar didMoveToSuperview]+33>
                        <__45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke+683>
                         <-[UIView(Hierarchy) _postMovedFromSuperview:]+484>
                          <-[UIView(Internal) _addSubview:positioned:relativeTo:]+2305>
                           <-[UIView(Hierarchy) addSubview:]+56>
                            <-[UIStatusBarWindow setStatusBar:]+311>
                             <-[UIApplication _createStatusBarWithRequestedStyle:orientation:hidden:]+384>
                              <-[UIApplication _runWithMainScene:transitionContext:completion:]+1047>
                               <__84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invo
                                <-[UIApplication workspaceDidEndTransaction:]+163>
                                 <__37-[FBSWorkspace clientEndTransaction:]_block_invoke_2+71>
                                  <__40-[FBSWorkspace _performDelegateCallOut:]_block_invoke+54>
                                   <-[FBSSerialQueue _performNext]+184>
                                    <-[FBSSerialQueue _performNextFromRunLoopSource]+52>
                                     <FBSSerialQueueRunLoopSourceHandler+33>
                                      <__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__+15>
                                       <__CFRunLoopDoSources0+523>
                                        <__CFRunLoopRun+1032>
                                         <CFRunLoopRunSpecific+470>
                                          <CFRunLoopRunInMode+123>
                                           <-[UIApplication _run]+540>
                                            <UIApplicationMain+160>
                                             <main+94>

Ошибка при запуске и, похоже, проблема с представлением батареи. Эта ошибка звонит вам в колокольчик?

FWW мое приложение в основном написано в Swift 2.0, на iOS9 с Xcode 7b6.

Ответ 1

Я столкнулся с той же проблемой, и причиной этого было то, что я играл с настройкой разных стилей строки состояния для разных экранов. Поэтому и мне нужно было добавить ключ "Просмотреть внешний вид панели управления на основе контроллера" внутри plist. И предупреждение исчезнет, ​​если я удалю этот ключ.

Ответ 2

Когда вы видите эту ошибку, возникающую в вашем коде, это означает, что вы передаете NULL CGContextRef в некоторый бит Core Graphics API (в данном случае CGContextSaveGState), что приведет к тому, что чертеж, который вы пытаетесь сделать, чтобы не работать или вести себя неожиданно.

В этом случае, это не происходит из вашего кода, поэтому вы не можете много сделать с этим - к счастью, ошибка не является фатальной, поэтому вы можете спокойно проигнорировать ее. Возможно, захотите записать ошибку с помощью backtrace.