CGContextSaveGState:无效上下文 0x0 (Xcode 7 GM)
CGContextSaveGState: invalid context 0x0 (Xcode 7 GM)
我用 Xcode 7 GM 编译代码后遇到这个问题。
根据 Apple 的说法,这是一个错误,但它似乎仍然是一个问题。一切正常,但是否可以消除这些错误?
: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
其他论坛有人说了状态栏的问题,但我没有成功消除该消息。这不是什么大问题,但是没用"error"。我正在使用 Interface Builder。
更新:如果你用Swift,我用Objective-C,
这也发生在我的 7 GM 上,但是从 Info.plist 中删除 UIViewControllerBasedStatusBarAppearance
为我修复了它,如 所述。
更新:警告似乎随着 iOS 9.2
消失了
我今天找到了导致此错误的另一个原因。
当我在 View Controller class 中编写一些绘图代码时,出现了这些错误。我意识到我必须创建一个 UIView subclass 并在覆盖 drawRect 函数中执行绘图步骤。当我将绘图代码移到那里时,所有错误都消失了。
这是使用调试器的好案例。我在 main
中设置了一个断点,然后使用 F7 键逐步执行代码,直到出现警告。事实证明,这个虚假错误还有另一种出现方式:
NSColor *myColor = colorFromRGBA(43,51,59,0.95);
[myColor set];
(self.window).backgroundColor = myColor;
它在 [myColor set]
上生成警告。显然,我不需要这个并将其注释掉。那时,错误消失了。当然,您的体验可能会有所不同。
重启设备。它解决了我的问题。
我正在使用 UIBezierPath
绘图
删除 path.fill()
删除了警告。
UIGraphicsPushContext
,UIGraphicsPopContext
为我工作
class CustomLayer: CAShapeLayer {
override func draw(in context: CGContext) {
UIGraphicsPushContext(context)
...Your code here...
UIGraphicsPopContext()
}
}
与 Ayman Ibrahim 所说的类似,
我注释掉了两行,效果很好。
bezier2Path.close()
// color.setFill()
// bezier2Path.fill()
我用 Xcode 7 GM 编译代码后遇到这个问题。
根据 Apple 的说法,这是一个错误,但它似乎仍然是一个问题。一切正常,但是否可以消除这些错误?
: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
其他论坛有人说了状态栏的问题,但我没有成功消除该消息。这不是什么大问题,但是没用"error"。我正在使用 Interface Builder。
更新:如果你用Swift,我用Objective-C,
这也发生在我的 7 GM 上,但是从 Info.plist 中删除 UIViewControllerBasedStatusBarAppearance
为我修复了它,如
更新:警告似乎随着 iOS 9.2
消失了我今天找到了导致此错误的另一个原因。
当我在 View Controller class 中编写一些绘图代码时,出现了这些错误。我意识到我必须创建一个 UIView subclass 并在覆盖 drawRect 函数中执行绘图步骤。当我将绘图代码移到那里时,所有错误都消失了。
这是使用调试器的好案例。我在 main
中设置了一个断点,然后使用 F7 键逐步执行代码,直到出现警告。事实证明,这个虚假错误还有另一种出现方式:
NSColor *myColor = colorFromRGBA(43,51,59,0.95);
[myColor set];
(self.window).backgroundColor = myColor;
它在 [myColor set]
上生成警告。显然,我不需要这个并将其注释掉。那时,错误消失了。当然,您的体验可能会有所不同。
重启设备。它解决了我的问题。
我正在使用 UIBezierPath
删除 path.fill()
删除了警告。
UIGraphicsPushContext
,UIGraphicsPopContext
为我工作
class CustomLayer: CAShapeLayer {
override func draw(in context: CGContext) {
UIGraphicsPushContext(context)
...Your code here...
UIGraphicsPopContext()
}
}
与 Ayman Ibrahim 所说的类似,
我注释掉了两行,效果很好。
bezier2Path.close()
// color.setFill() // bezier2Path.fill()