CGContextSaveGState:应用程序启动时无效的上下文 0x0

CGContextSaveGState: invalid context 0x0 at App Launch

我已经将 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。

当您看到该错误源自您的代码时,这意味着您正在将 NULL CGContextRef 传递给 Core Graphics API 的某个位(在本例中为 CGContextSaveGState),这将导致您尝试绘制的任何图无法工作或出现意外行为。

在这种情况下,它不是源自您的代码,因此您对此无能为力——幸运的是,该错误不是致命的,因此您可以安全地忽略它。不过,可能想要 file a bug 使用回溯。

我遇到了同样的问题,原因是我在为不同的屏幕设置不同的状态栏样式。因此,我需要在 plist 中添加 "View controller-based status bar appearance" 键。如果我删除此密钥,警告就会消失。