2009-10-20 6 views
5

Lors de l'exécution de mon application (qui fait un bon peu de dessin personnalisé) je reçois cette erreur (il se passe un peu sans effets secondaires observables, mais je voudrais comprendre ce qui se passe).Besoin d'aide pour comprendre "kCGErrorIllegalArgument: CGSUnionRegionWithRect: Région invalide"

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

Donc, je définir ce point d'arrêt et obtenir cette pile. Aucun des cadres de pile n'est mon code, bien que j'ai certainement écrasé drawRect de NSView dans certains cas.

Est-ce que quelqu'un a déjà vu cela ou a-t-il un aperçu de ce qui se passe?

#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

Il serait vraiment utile si vous publiez également le code où l'erreur se produit. –

+0

Je ne sais pas où ça se passe. Aucun de mon code n'est dans la trace de la pile. – nall

Répondre

3

Il se trouve que je demandait l'NSProgressIndicator à afficher à partir d'un fil non-principale. Une fois que j'ai enlevé ceci les messages sont partis.

4

J'ai récemment eu exactement le même message dans la console.
Dans mon cas, je mettais à jour un indicateur de progression dans le mauvais sens.
Mon indicateur de progression était affiché sur une feuille et je ne rejetais pas correctement la feuille. Les erreurs sont toujours apparues la deuxième fois que j'ai affiché la feuille NSS avec beginSheet
Utilisez-vous une feuille NSS?
Pour moi, il a travaillé à:

  1. passer un didEndSelector à beginSheet.
  2. A l'intérieur de ce sélecteur [sheet close];
  3. et enfin un [NSApp endSheet] de rejeter la feuille
+0

Cela semble prometteur. En fait, je mets à jour un indicateur de progression, mais je n'utilise pas de NSSheet (explicitement de toute façon). – nall

+0

Comment avez-vous débogué votre problème, btw? – nall

+0

Trouvé par accident. Au début, je me doutais de mon code de dessin personnalisé. Mais à la fin c'était la feuille de fin manquante. Mon indicateur de feuille et de progression fonctionnait correctement lorsqu'il a été affiché pour la première fois lors d'une exécution d'application. Mais il a commencé à écrire le message "Région invalide" pour chaque appel suivant. –