2012-08-04 61 views
5

後,我升級我的編程機器MountainLion和XCode的新版本,我得到這樣的警告打印到控制檯,每次我跑我的應用程序:「無厘頭繪製的圖像」 - 升級後的警告,以MountainLion

[NSGraphicsContext currentContext]爲零時繪製圖像沒有意義。這是一個編程錯誤。 Break on void _NSWarnForDrawingImageWithNoCurrentContext()進行調試。這將只記錄一次。這可能會在未來破裂。

我沒有在我的應用程序的任何地方使用圖像,我搜索整個項目的圖像,但找不到一個。有人知道可能會導致這種情況嗎?

我使用2個nib文件btw:一個Popover和Mainwindow。它們都不包含圖像。

編輯: 我發現了線的時候,這似乎:

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

但這些都不對象是零。有什麼建議麼?編輯2: Menulet是一個NSView子類btw。所以我通過了一個觀點。

+0

你是否在它所說的地方設置了斷點?當斷點被擊中時發佈堆棧跟蹤。 – 2012-08-04 04:00:58

+0

我怎麼才能找出來放?它沒有顯示黃色警告標誌,我只是收到了這條消息。有一個日期和我的應用程序名稱後跟「[6686:303]」。我檢查了303行的每一堂課,但找不到一件事。 – 2012-08-04 07:01:12

+2

閱讀[關於Breakpoint Navigator](http://developer.apple.com/library/mac/#recipes/xcode_help-breakpoint_navigator/articles/about_breakpoint_navigator.html#//apple_ref/doc/uid/TP40010433-CH6-SW1)和[添加符號斷點](http://developer.apple.com/library/mac/#recipes/xcode_help-breakpoint_navigator/articles/adding_a_symbolic_breakpoint.html)。在符號字段中放置_NSWarnForDrawingImageWithNoCurrentContext,並將模塊字段留空。 – 2012-08-04 07:33:18

回答

0

在我的情況下,警告導致重寫我的menuIcon矩形(工作menuBar應用程序)。還沒有解決問題,但我知道它來自我的情況。如果您有菜單欄應用程序,請檢查生成圖標的代碼。

1

我試着設置斷點,但它在加載筆尖時調用。所以它是非特定的。我創建了一個nib的副本,然後逐個刪除它,直到警告消失。在我的情況下,它是一個NSOutlineView。但是,當我添加一個新的NSOutlineView時,錯誤又回來了。

我終於能夠通過手動重建整個NIB來消除警告。辛苦,但它擺脫了警告。

+0

謝謝,我會稍後再試! – 2012-11-05 09:22:36

+0

實際上重新創建NIB文件修復了它。 – 2013-05-20 13:46:52

1

如果你有一個在nib中初始化但沒有設置圖像的NSImageView(你自己在代碼中繪製圖像),只需設置它,警告就會消失。

+1

我沒有NSImageView。這是我很好奇... – 2012-11-13 13:29:12

+1

但我有一個NSImageView初始化在筆尖,但沒有設置圖像。刪除它確實刪除了錯誤。非常感謝。 – 2012-12-12 06:56:58

1

在我的情況下,這是因爲圖像大小爲{0,0},這「沒有意義」。 實際上,圖像是爲NSButton,我以編程方式更改按鈕的圖像。在一種情況下,該按鈕應該是空的,所以我只需用[NSImage new]設置一個空的圖像。 但是出現錯誤,那麼無論我如何更改按鈕的圖像,按鈕總是空的。 將大小設置爲空白圖像後,問題就解決了,我可以成功更改按鈕的圖像。