【问题标题】:CGContext invalid context 0x0CGContext 无效上下文 0x0
【发布时间】:2013-10-30 17:50:53
【问题描述】:

:CGContextSetFillColorWithColor:无效的上下文 0x0。这是 一个严重的错误。此应用程序或它使用的库正在使用 无效的上下文,从而导致整体退化 系统的稳定性和可靠性。此通知是一种礼貌:请 解决这个问题。这将成为即将到来的更新中的致命错误。

:CGContextSetStrokeColorWithColor:无效的上下文 0x0。这 是一个严重的错误。此应用程序或其使用的库正在使用 一个无效的上下文,从而有助于整体 降低系统稳定性和可靠性。本通知为 礼貌:请解决这个问题。这将成为一个致命的错误 即将更新。

和类似的错误重复:

  • CGContextSaveGState
  • CGContextSetFlatness
  • CGContextAddPath
  • CGContextDrawPath
  • CGContextRestoreGState
  • CGContextSaveGState
  • CGContextSetFlatness
  • CGContextAddPath
  • CGContextDrawPath
  • CGContextRestoreGState
  • CGContextSetFillColorWithColor
  • CGContextSetStrokeColorWithColor
  • CGContextSetFillColorWithColor
  • CGContextSetStrokeColorWithColor
  • CGContextGetBlendMode
  • CGContextSetBlendMode
  • 还有更多...

在我的应用程序中,我不使用任何 CGContext 的东西。我只有一个UITextViewUIButtonUILabel。还没有添加太多代码。只需将UITextView的内容设置为:

[self.text_view setText:@"123"];

如何解决错误?

我正在使用 Xcode 5.0(内部版本 5A1413)、iOS 7 模拟器(64 位 Retina 4")、Mac OS X 10.8.5

【问题讨论】:

  • 我可以使用 UITextField 重现此警告,但不能使用 UITextView。警告仍在 iOS 7.0.3 中出现。
  • 感谢您的信息。我从其他线程中读到UITextField 也受到影响,但没有一个提供有效的解决方案。我认为这是一场虚惊。
  • 这个问题解决了吗?我正在为 iOS 开发 Unity3D 游戏,我们得到了非常相似的与 CG 相关的无效状态警告输出,然后应用程序就死了。它只会随机发生,并且仅在触发本机对话框时发生(我们正在尝试获取本机对话框插件的源代码,但从阅读这篇文章来看,它似乎更像是渲染文本框的 iOS 问题?)
  • 这是一个已知问题(在 Google 和 Apple 论坛中搜索后)。鉴于尚未发布新的 iOS SDK 版本,此问题仍未解决,但无害。可能是误报。
  • 这对我的应用程序有害,而不仅仅是误报,UITextView 会在此错误上被清除。它显示了从耗时计算中获得的数千位数字的一行,然后当翻阅数字时,它将错误地清除。当计算可能需要数小时时非常严重。希望 iOS 更新能尽快修复!

标签: objective-c ios7


【解决方案1】:

感谢@shnaz 的建议。

我遇到了同样的问题,我花了一些时间才找到问题,希望我的解决方案可以帮助其他人,如果他们也遇到同样的问题。

我可能没有仔细阅读文档,而且我是创建 UIBezierPath 的新手。事实证明,在 XCode6 中,.stroke().fill() 有时会导致无效的上下文 0x0。

【讨论】:

    【解决方案2】:

    我在使用 CGContext 和 UIBezierPaths 时遇到了类似的错误,我使用了 Juraj Antas 的方法,我马上就找到了原因。

    我正在使用 CGContext 在 UIImageView 上绘图。首先,我创建一个 UIBezierPath,然后使用CGContextAddPath(..) 绘制它。我发现我在创建 UIBezierPath 时设置了颜色,xcode 不喜欢它并且无论如何都会被CGContextSetStrokeColorWithColor(..) 覆盖。一旦我从 UIBezierPath 创建代码中删除了UIColor.whiteColor().set(),错误就消失了。

    【讨论】:

      【解决方案3】:

      试试这个:在 xcode 中将符号断点添加到 CGPostError。 (添加符号断点,并将符号字段类型CGPostError)

      当发生错误时,调试器将停止代码执行,您可以检查方法调用堆栈并检查参数。

      【讨论】:

      • 我希望我能给你一百个赞成票。这帮助我解决了一个长期存在的问题,我不知道这些消息的来源。谢谢!
      • 太棒了,伙计——你用这个技巧为我节省了很多时间!!
      • 这个断点在我的任何视图控制器加载之前引导我到汇编代码。可能是苹果的bug?
      • 是的,很有可能,尤其是在 xcode 7 beta 上;)
      猜你喜欢
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多