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

时间:2015-08-26 20:33:28

标签: xcode core-graphics xcode7

更新:我正在使用带有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内容,而其他类似问题的答案对我不起作用。我知道在没有代码的情况下帮助调试可能很困难,但我无法弄清楚与此相关的代码,所以如果有人有想法我可以发布更多代码。

6 个答案:

答案 0 :(得分:51)

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

它发生在iOS 9(beta&amp; GM)上,但不发生在8.4上。

答案 1 :(得分:11)

在@ JimRota的建议中,将其转化为答案,因为它被视为有用:

这仍然在XCode 7 GM,iOS9 GM中。但是,检查出来:将UIViewControllerBasedStatusBarAppearance设置为YES(即使状态栏已隐藏,这就是为什么我将其设置为NO以开始),并且警告消失。疯狂!

然后我必须将它添加到我的视图控制器中以隐藏状态栏:

- (BOOL) prefersStatusBarHidden
{
    return YES;
}

对我来说,我所有的VC实际上都是从ProjectNameViewController继承的,所以简化了一点。

答案 2 :(得分:2)

从上面给出的评论中,这是解决问题的真正方法:

UIViewControllerBasedStatusBarAppearance to YES in Info.plist

答案 3 :(得分:1)

在iOS9 beta5上编译我的项目时,我也得到了这个(包括编辑部分)。在iOS8上编译时很好。

在执行来自

的任何命令之前,它恰好在我的App Delegate中发生
  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

所以它似乎比我们的更容易成为iOS beta版。

答案 4 :(得分:0)

当使用非整数值作为可调整大小的图像的插图时,我遇到了相同类型的错误,如下所示:

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

这导致了这种日志。使用整数值修复了问题。

答案 5 :(得分:-1)

我有这个错误。这是因为我创建了一个函数,忘了添加返回值。

-(void)doSomething

VS

-doSomething

啊。