问题
After I upgraded my programming machine to MountainLion and XCode to the new version I get this warning printed into the console everytime I run my application:
It does not make sense to draw an image when [NSGraphicsContext currentContext] is nil. This is a programming error. Break on void _NSWarnForDrawingImageWithNoCurrentContext() to debug. This will be logged only once. This may break in the future.
I'm not using an Image anywhere in my Application and I searched the whole project for an image but couldn't find one. Does anybody know what could cause this?
I'm using 2 nib files btw: One Popover and the Mainwindow. Neither of them contains an image.
Edit: I found the line when this appears:
[self.popover showRelativeToRect:[appDelegate.menulet frame]
ofView:appDelegate.menulet
preferredEdge:NSMinYEdge];
But none of those object is nil. Any suggestions?
Edit 2: The Menulet is a NSView subclass btw. So I'm passing a view.
回答1:
I tried setting the breakpoint but it is called when the nib loads. So it is very non-specific. I created a copy of the nib and then deleted objects from it one by one until the warning went away. In my case, it was an NSOutlineView. But as as soon as I added a new NSOutlineView, the error came back.
I was finally able to remove the warning by rebuilding the entire NIB by hand. Painstaking but it got rid of the warning.
回答2:
If you have a NSImageView that's initialized in the nib but with no image set (and you draw the image yourself in code) just set it and the warning will be gone.
回答3:
In my case, it's because the image size is {0,0}, which "doesn't make sense".
Actually, the image is for a NSButton, I change the button's image programmatically. In one case, the button should be empty, so I just set an empty image with [NSImage new]
.
But the error occurs, then no matter how I change the button's image, the button is always empty.
After setting a size to the empty image, the problem is solved, and I can change the button's image successfully.
回答4:
In my case the warning resulted in rewriting my menuIcon with a rectangle (Working on a menuBar application). Haven't solved the problem yet, but I know where it came from in my case. If you have a menubar application, check the code which generates your icon.
来源:https://stackoverflow.com/questions/11805741/does-not-make-sense-to-draw-an-image-warning-after-upgrade-to-mountainlion