CGContextSaveGState:仅在设备上出现无效的上下文0x0错误

27

更新:我正在使用带有Swift 2.0的XCode 7 Beta

当我尝试在iPhone上运行我的应用程序时,我会收到以下3个错误:

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

当我启用CG_CONTEXT_SHOW_BACKTRACE变量时,我会得到这个:

Backtrace:
      <<redacted>+40>
       <<redacted>+432>
        <<redacted>+144>
         <<redacted>+172>
          <<redacted>+332>
           <<redacted>+112>
            <<redacted>+820>
             <<redacted>+688>
              <<redacted>+356>
               <<redacted>+80>
                <<redacted>+808>
                 <<redacted>+344>
                  <<redacted>+420>
                   <<redacted>+104>
                    <<redacted>+284>
                     <<redacted>+556>
                      <<redacted>+504>
                       <<redacted>+1792>
                        <<redacted>+220>
                         <<redacted>+284>
                          <<redacted>+920>
                           <<redacted>+168>
                            <<redacted>+184>
                             <<redacted>+56>
                              <<redacted>+24>
                               <<redacted>+540>
                                <<redacted>+724>
                                 <CFRunLoopRunSpecific+384>
                                  <<redacted>+460>
                                   <UIApplicationMain+204>
                                    <main+164>

我不确定如何解释这个问题,我的代码中没有使用任何CoreGraphics内容,并且其他类似的问题的答案对我没有用。我知道在没有代码的情况下进行调试可能很困难,但是我无法弄清楚与此相关的代码,因此如果有人有想法,我可以发布更多代码。


1
请查看此帖子,它可能会有所帮助:https://dev59.com/sGIk5IYBdhLWcg3wL7fj?rq=1 - Vladmrnv
7个回答

52

从我的实验来看,这似乎是由于在Info.plist中定义了 UIViewControllerBasedStatusBarAppearance造成的。

这发生在iOS 9(beta和GM版本),但不会在8.4上发生。


19
这仍然在发布的Xcode 7.0版本中发生。 - picciano
7
在 XCode 7 GM,iOS9 GM 中仍然存在此问题。但是请注意:将 UIViewControllerBasedStatusBarAppearance 设置为 YES(即使状态栏已隐藏,这就是我最初设置为 NO 的原因),那么警告将消失。很疯狂! - Olie
3
你的回答对我很有用。你应该将其变成一个回答而不是评论。 - Jim Rota
这里是关于编程的内容,从英语翻译成中文:可能会有所帮助,这里是苹果论坛帖子,其中苹果员工表示,现在可以避免此警告并且这是一个已知问题。 - Rajal
我已经重新措辞了这个答案,以免它看起来像一个“我也是!”的评论。有关更多信息,请参见此元帖 - Lightness Races in Orbit
显示剩余3条评论

11

根据@JimRota的建议,将此内容转化为回答,因为它被认为是有帮助的:

我在XCode 7 GM和iOS9 GM中仍然遇到此问题。但是请注意:将UIViewControllerBasedStatusBarAppearance设置为YES(即使状态栏已隐藏,这就是我最初将其设置为NO的原因),那么警告就会消失。太疯狂了!

随后,我不得不将以下内容添加到我的视图控制器以保持状态栏的隐藏:

- (BOOL) prefersStatusBarHidden
{
    return YES;
}

对我来说,所有我的视图控制器实际上都继承自ProjectNameViewController,因此这简化了一些操作。


2

从上面的评论中,这是修复问题的真正方法:

UIViewControllerBasedStatusBarAppearance to YES in Info.plist

2

我在使用Xcode 7 GM版本时也遇到了同样的问题。虽然他们承认这是一个bug,但还没有修复它。尽管一切正常,但这仍然很烦人。我想我会选择忽略它们。

开发者论坛帖子

1
我在iOS9 beta5上编译项目时也遇到了这个问题(包括被编辑部分)。在iOS8上编译时没有问题。它发生在我的应用程序委托中,在执行任何命令之前。因此,这似乎更可能是iOS beta的问题,而不是我们自己的问题。

1
我已经添加了我正在使用 XCode 7 beta 和 swift 2,但我认为这也发生在 XCode 7 上。 - mattgabor

0

当我使用非整数值作为可调整大小的图像的插入时,我遇到了相同类型的错误,就像这样:

UIImage * image = [[UIImage imageNamed:@"pill"]
             resizableImageWithCapInsets:UIEdgeInsetsMake(17.5, 17.5, 17.5, 17.5)];

这导致了这种类型的日志。使用整数值解决了问题。


-1

我遇到了这个错误。那是因为我创建了一个函数,但是忘记添加返回值。

-(void)doSomething

对比。

-doSomething

唉。


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