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

10

因为我遇到了以下错误:CGContextSaveGState: invalid context 0x0,所以我设置了CG_CONTEXT_SHOW_BACKTRACE环境变量为YES

以下堆栈跟踪并没有对我很有帮助。

<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>

错误发生在启动时,似乎与电池视图有问题。这个错误让你想起了什么吗?

附言:我的应用程序主要使用Swift 2.0编写,在iOS9上使用Xcode 7b6。


我在iOS9 / Xcode 7b6下启动我的应用程序时遇到了完全相同的问题。如果我有任何发现,我会告诉你。 - hatfinch
似乎在使用Xcode 7b6编译应用程序时存在普遍问题。我也遇到了同样的问题。 - Roman Kabachenko
2
仍然在Xcode 7 GM中出现。 - Matthieu Riegler
我也遇到了这个问题,我认为这可能与不使用故事板或nib文件有关。 - troppoli
我也有这个警告,而且我正在使用xibs。我会说这是一个Xcode的bug,因为它不会影响任何东西,只会留下令人讨厌的日志。 - avuthless
2个回答

6

我也遇到了同样的问题,原因是我在不同的屏幕中设置了不同的状态栏风格。因此需要在plist文件中添加“View controller-based status bar appearance”键。如果我删除这个键,警告就会消失。


你懂的。我改用 [[UINavigationBar appearance] setBarStyle:UIBarStyleBlack]; 来获取带有文本的状态栏。 - Matthieu Riegler

0

当您在代码中看到这个错误时,它意味着您正在向某些 Core Graphics API(在本例中为 CGContextSaveGState)传递一个 NULL CGContextRef,这将导致您尝试进行的任何绘图无法工作或行为异常。

在这种情况下,它不是源自您的代码,因此您无法做太多事情——幸运的是,这个错误并不致命,所以您可以安全地忽略它。不过,您可能想要 提交一个带有回溯信息的错误报告


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接