5

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

当 [NSGraphicsContext currentContext] 为 nil 时,绘制图像没有意义。这是一个编程错误。中断 void _NSWarnForDrawingImageWithNoCurrentContext() 进行调试。这将只记录一次。这可能会在未来打破。

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

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

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

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

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

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

4

4 回答 4

1

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

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

于 2012-11-05T02:07:08.680 回答
1

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

于 2012-11-13T13:17:11.797 回答
1

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

于 2013-02-20T10:13:47.830 回答
0

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

于 2012-12-12T11:02:15.937 回答