在我将编程机器升级到MountainLion和XCode到新版本后,每次运行我的应用程序时都会在控制台中显示此警告:
在[NSGraphicsContext时]绘制图像没有意义 currentContext]是零。这是一个编程错误。打破空虚 _NSWarnForDrawingImageWithNoCurrentContext()进行调试。这将只记录一次。这可能在将来破裂。
我没有在我的应用程序中的任何地方使用图像,我在整个项目中搜索图像但找不到图像。有人知道是什么原因引起的吗?
我正在使用2个nib文件btw:一个Popover和Mainwindow。它们都不包含图像。
编辑: 我出现了这条线:
[self.popover showRelativeToRect:[appDelegate.menulet frame]
ofView:appDelegate.menulet
preferredEdge:NSMinYEdge];
但这些对象都不是零。有什么建议吗?
编辑2: Menulet是一个NSView子类btw。所以我传递了一个观点。
答案 0 :(得分:1)
我尝试设置断点,但是当nib加载时会调用它。所以它非常不具体。我创建了一个nib的副本,然后逐个删除它中的对象,直到警告消失。就我而言,它是一个NSOutlineView。但是,当我添加新的NSOutlineView时,错误又回来了。
我终于可以通过手动重建整个NIB来删除警告。苦心经营但却摆脱了警告。
答案 1 :(得分:1)
如果您有一个在笔尖中初始化但没有设置图像的NSImageView(并且您自己在代码中绘制图像),只需设置它,警告就会消失。
答案 2 :(得分:1)
在我的情况下,这是因为图像大小是{0,0},“没有意义”。
实际上,图像用于NSButton,我以编程方式更改按钮的图像。在一种情况下,按钮应为空,所以我只用[NSImage new]
设置一个空图像。
但是出现错误,那么无论我如何更改按钮的图像,按钮始终为空。
将尺寸设置为空图像后,问题就解决了,我可以成功更改按钮的图像。
答案 3 :(得分:0)
在我的情况下,警告导致我用一个矩形重写我的menuIcon(在menuBar应用程序上工作)。尚未解决问题,但我知道它来自我的情况。如果您有菜单栏应用程序,请检查生成图标的代码。