2009-10-20 14 views
5

Al ejecutar mi aplicación (que hace un buen dibujo personalizado) me sale este error (sucede bastante sin efectos secundarios observables, pero me gustaría entiende lo que está pasando).Necesita ayuda para entender "kCGErrorIllegalArgument: CGSUnionRegionWithRect: Invalid Region"

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

Así que establece que punto de interrupción y obtén esta pila. Ninguno de los fotogramas de la pila es mi código, aunque ciertamente he anulado el DrawRect de NSView en algunos casos.

¿Alguien ha visto esto antes o tiene alguna idea de lo que está sucediendo?

#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

Sería muy útil si también publicaras el código donde está ocurriendo el error. –

+0

No tengo idea de dónde está sucediendo. Ninguno de mi código está en el rastro de la pila. – nall

Respuesta

3

Resulta que estaba solicitando la NSProgressIndicator para mostrar de un hilo no principal. Una vez que eliminé esto, los mensajes desaparecieron.

4

Recientemente tuve exactamente el mismo mensaje en la consola.
En mi caso estaba actualizando un indicador de progreso de la manera incorrecta.
Mi indicador de progreso se mostraba en una hoja y no descartaba correctamente la hoja. Los errores siempre aparecieron la segunda vez que visualicé la NSSheet con beginSheet
¿Está utilizando una NSSheet?
Para mí funcionó a:

  1. pasar una didEndSelector a beginSheet.
  2. A [sheet close]; dentro de ese selector
  3. y finalmente un [NSApp endSheet] Para descartar la hoja
+0

Esto suena prometedor. De hecho, estoy actualizando un indicador de progreso, pero no estoy usando una NSSheet (explícitamente de todos modos). – nall

+0

¿Cómo depuró su problema, por cierto? – nall

+0

Lo encontré por accidente. Al principio estaba sospechando de mi código de dibujo personalizado. Pero al final fue la hoja final faltante. Mi hoja y el indicador de progreso funcionaban correctamente cuando se mostró por primera vez en una aplicación ejecutada. Pero comenzó a escribir el mensaje "Región no válida" para cada llamada posterior. –

Cuestiones relacionadas