在运行我的应用程序时(它做了很多自定义绘图)我得到了这个错误(它发生了很多没有可观察到的副作用,但我想了解发生了什么)。
<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 :(得分:4)
我最近在控制台中有完全相同的消息
就我而言,我是以错误的方式更新进度指示器
我的进度指示器显示在工作表上,而我没有正确地解除工作表。
第二次使用beginSheet
显示NSSheet时,错误总是会弹出
您使用的是NSSheet吗?
对我而言,它起作用了:
didEndSelector
传递给。{
beginSheet
。[sheet close];
选择[NSApp endSheet]
以解散表格答案 1 :(得分:3)
事实证明我正在请求NSProgressIndicator从非主线程显示。一旦我删除了这些消息就消失了。