Así que estoy comenzando un nuevo NSThread que deseo poder usar más adelante llamando al performSelector:onThread:...
. Por lo que entiendo es que llamar a los métodos agrega esa llamada al runloop en ese hilo, por lo que en su próxima iteración mostrará todas estas llamadas y luego las llamará hasta que no quede nada por llamar. Así que necesito este tipo de funcionalidad, un hilo inactivo listo para el trabajo que solo puedo invocar. Mi código actual es el siguiente:Mantenga NSThread vivo y ejecute NSRunLoop en él
- (void)doInitialize
{
mThread = [[NSThread alloc] initWithTarget:self selector:@selector(runThread) object:nil];
[mthread start];
}
- (void)runThread
{
NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
// From what I understand from the Google machine is that this call should start the
// runloop on this thread, but it DOESN'T. The thread dies and is un-callable
[[NSRunLoop currentRunLoop] run];
[pool drain];
}
- (void)scheduleSomethingOnThread
{
[self performSelector:@selector(hardWork) onThread:mThread withObject:nil waitUntilDone:NO];
}
Pero el hilo no se mantiene viva, y la performSelector: onThread no hace nada. ¿Cómo hago esto de la manera correcta?
Gracias, que es un poco más claro ahora. – ErikPerik
Esto también es cierto para el ciclo de ejecución principal en una herramienta de línea de comandos. Es una aplicación NS/UIA que proporciona las fuentes de entrada predeterminadas en el ciclo de ejecución principal en una aplicación GUI. –