【问题标题】:"Does not make sense to draw an image" - Warning after upgrade to MountainLion“绘制图像没有意义” - 升级到 MountainLion 后的警告
【发布时间】:2012-08-04 03:43:07
【问题描述】:

在我将编程机器升级到 MountainLion 并将 XCode 升级到新版本后,每次运行我的应用程序时,我都会在控制台中打印此警告:

当 [NSGraphicsContext currentContext] 为零。这是一个编程错误。打破虚无 _NSWarnForDrawingImageWithNoCurrentContext() 进行调试。这将只记录一次。这可能会在未来中断。

我没有在我的应用程序中的任何地方使用图像,我在整个项目中搜索图像但找不到图像。有人知道是什么原因造成的吗?

顺便说一句,我正在使用 2 个 nib 文件:一个 Popover 和主窗口。它们都不包含图像。

编辑: 出现时我找到了这条线:

    [self.popover showRelativeToRect:[appDelegate.menulet frame] 
                              ofView:appDelegate.menulet 
                       preferredEdge:NSMinYEdge];

但这些对象都不是零。有什么建议吗?

编辑 2: Menulet 是一个 NSView 子类顺便说一句。所以我正在传递一个视图。

【问题讨论】:

  • 你设置断点了吗?命中断点时发布堆栈跟踪。
  • 我怎样才能知道是把它?它没有向我显示黄色警告标志,我只是收到此消息。有一个日期和我的应用程序名称,后跟“[6686:303]”。我检查了第 303 行中的每个类,但找不到任何东西。
  • 阅读About the Breakpoint NavigatorAdding a Symbolic Breakpoint。在符号字段中输入_NSWarnForDrawingImageWithNoCurrentContext,并将模块字段留空。
  • 谢谢,我试试这个。 :)

标签: warnings osx-mountain-lion


【解决方案1】:

我尝试设置断点,但它在笔尖加载时被调用。所以它非常不具体。我创建了一个 nib 的副本,然后一个一个地从中删除对象,直到警告消失。在我的例子中,它是一个 NSOutlineView。但是当我添加一个新的 NSOutlineView 后,错误又回来了。

我终于能够通过手动重建整个 NIB 来消除警告。辛苦但它摆脱了警告。

【讨论】:

  • 谢谢,我稍后再试试!
  • 实际上重新创建 NIB 文件修复了它。
【解决方案2】:

如果您有一个在 nib 中初始化但没有设置图像的 NSImageView(并且您自己在代码中绘制图像),只需设置它,警告就会消失。

【讨论】:

  • 但我有一个 NSImageView 已在笔尖中初始化但没有设置图像。删除它确实消除了错误。非常感谢。
【解决方案3】:

就我而言,这是因为图像大小为 {0,0},“没有意义”。 实际上,图像是 NSButton 的,我以编程方式更改按钮的图像。在一种情况下,按钮应该是空的,所以我只是用[NSImage new] 设置了一个空图像。 但是错误发生了,那么无论我如何更改按钮的图像,按钮总是为空的。 给空图片设置大小后,问题解决,我可以成功更改按钮的图片了。

【讨论】:

    【解决方案4】:

    在我的情况下,警告导致用矩形重写我的 menuIcon(在 menuBar 应用程序上工作)。还没有解决这个问题,但我知道它来自我的情况。如果您有菜单栏应用程序,请检查生成图标的代码。

    【讨论】:

      猜你喜欢
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多