Tengo un problema relacionado con la interfaz de usuario/subprocesamiento en el desarrollo de una interfaz de usuario de cacao. La aplicación está diseñada de esta manera:Ejecutar una GUI de Cocoa en un hilo no principal
Tema principal (# 1): analiza los argumentos, las cargas plugins, etc.
hilo Gui (#?): Inicia la interfaz gráfica de usuario, gestiona los eventos, etc. Su interfaz gráfica de usuario del hilo .
El marco de Cocoa no es seguro para subprocesos, pero aplica una regla, la GUI debe ejecutarse en el hilo principal. Una afirmación se usa para verificar esto. Para tratar de evitar esto, implementé el método de ejecución yo mismo (código a continuación) siguiendo esto - http://cocoawithlove.com/2009/01/demystifying-nsapplication-by.html - guía. Pero me estoy perdiendo algo. Se abre una ventana, pero permanece en blanco (completamente blanco). Aunque si hago la llamada en el hilo principal, funciona perfectamente.
Así que, básicamente, necesito descubrir qué falta.
- (void)run
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[self finishLaunching];
shouldKeepRunning = YES;
do
{
[pool release];
pool = [[NSAutoreleasePool alloc] init];
NSEvent *event =
[self
nextEventMatchingMask:NSAnyEventMask
untilDate:[NSDate distantFuture]
inMode:NSDefaultRunLoopMode
dequeue:YES];
[self sendEvent:event];
[self updateWindows];
} while (shouldKeepRunning);
[pool release];
}
- (void)terminate:(id)sender
{
shouldKeepRunning = NO;
}
Parece que debe invertir las cosas para las que está utilizando sus hilos. ¿Por qué luchar contra el marco? –
Porque preferiría no luchar contra la arquitectura de los complementos del programa ... Pero creo que tendré que admitir en este ... – OCarlos