需要帮助理解"kCGErrorIllegalArgument:CGSUnionRegionWithRect:Invalid Region"

nal*_*all 5 cocoa core-animation core-graphics objective-c

在运行我的应用程序(它做了很多自定义绘图)时,我得到了这个错误(它发生了很多没有可观察到的副作用,但我想了解发生了什么).

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

所以我设置了断点并得到了这个堆栈.没有任何堆栈帧是我的代码,但在某些情况下我肯定已经覆盖了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
Run Code Online (Sandbox Code Playgroud)

nal*_*all 3

事实证明,我正在请求 NSProgressIndicator 从非主线程显示。一旦我删除它,消息就消失了。