2009-10-20 34 views
5

運行我的應用程序(它做了一個很好的自定義繪圖)我得到這個錯誤(它發生很好,沒有可觀察到的副作用,但我想了解發生了什麼)。需要幫助理解「kCGErrorIllegalArgument:CGSUnionRegionWithRect:無效的區域」

<Error>: kCGErrorIllegalArgument: CGSUnionRegionWithRect : Invalid region 
<Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch 
     errors as they are logged. 

因此,我設置該斷點並獲得此堆棧。沒有一個堆棧框架是我的代碼,儘管在某些情況下我肯定會重寫NSView的drawRect。

有沒有人看過這個或有深入瞭解發生了什麼?

#0 0x94bee5f2 in CGErrorBreakpoint() 
#1 0x94c831d8 in CGSGlobalErrorv() 
#2 0x94a64b61 in CGSUnionRegionWithRect() 
#3 0x912a2a70 in -[NSRegion addRegion:]() 
#4 0x912a28c1 in -[NSWindow _setNeedsDisplayInRegion:]() 
#5 0x911f3548 in -[NSWindow _absorbDeferredNeedsDisplayRegion]() 
#6 0x911f2113 in -[NSView _sendViewWillDrawInRect:clipRootView:suppressRecursion:]() 
#7 0x91154ee9 in -[NSView displayIfNeeded]() 
#8 0x9111e292 in -[NSWindow displayIfNeeded]() 
#9 0x9114f764 in _handleWindowNeedsDisplay() 
#10 0x9408eb02 in __CFRunLoopDoObservers() 
#11 0x9404b65d in __CFRunLoopRun() 
#12 0x9404ad34 in CFRunLoopRunSpecific() 
#13 0x9404ab61 in CFRunLoopRunInMode() 
#14 0x97984fec in RunCurrentEventLoopInMode() 
#15 0x97984da3 in ReceiveNextEventCommon() 
#16 0x97984c28 in BlockUntilNextEventMatchingListInMode() 
#17 0x91125c95 in _DPSNextEvent() 
#18 0x9112550a in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]() 
#19 0x910e769b in -[NSApplication run]() 
#20 0x910df735 in NSApplicationMain() 
#21 0x00002a4f in main (argc=0x1, argv=0xbffff4d4) at 
        /Users/me/Code/myapp/src/main.m:19 
+0

如果您還將代碼發佈到發生錯誤的位置,這將非常有幫助。 – 2009-10-20 18:40:54

+0

我不知道它在哪裏發生。我的代碼都不在堆棧跟蹤中。 – nall 2009-10-20 20:25:23

回答

3

原來我請求NSProgressIndicator到從非主線程顯示。一旦我刪除了這些消息就消失了。

4

我最近在控制檯中的消息完全一樣。
在我的情況下,我錯誤地更新了進度指示器。
我的進度指示器顯示在工作表上,我沒有正確解僱工作表。 第二次顯示NSSheet時出錯總是彈出beginSheet
您是否在使用NSSheet?
對我來說,它的工作到:

  1. 傳遞一個didEndSelectorbeginSheet
  2. 該 選擇
  3. 最後一個[NSApp endSheet]內的[sheet close];以關閉片
+0

這聽起來很有希望。實際上,我正在更新一個進度指示器,但並未使用NSSheet(無論如何)。 – nall 2009-10-20 20:35:15

+0

你是怎麼調試你的問題的,順便說一句? – nall 2009-10-20 20:36:32

+0

發現意外。起初我懷疑我的自定義繪圖代碼。但最終它是缺少的endSheet。 我的工作表和進度指示器在應用程序運行中首次顯示時正常工作。但它開始爲每個後續呼叫寫入「無效區域」消息。 – 2009-10-21 07:58:43