La mejor forma de implementar mediante multihilo

Soy un poco nuevo en multihilo, y necesito un consejo.

Estoy usando ARC en mi código.

Problema: Configuré NSTimer en mi aplicación para disparar cada 1 segundo algún método que crea e inicia el hilo de este modo

//Create a new thread mSomeThread = [[NSThread alloc] initWithTarget:self selector:@selector(someMethod) object:nil]; //start the thread [mSomeThread start]; 

Donde mSomeThread es un ivar

Digamos que la ejecución de mSomeThread tarda más de 1 segundo, y el mSomeThread se asigna por segunda vez, es decir, según las "reglas" de ARC, se libera antes de que se asigne una vez más.

¿Significa que el primer hilo no se completa y se ve obligado a hacerlo?

Un NSThread conserva durante la duración de su ejecución. No hay riesgo de que restablecer mSomeThread que se termine prematuramente un subprocess en ejecución.

Sí. Si realmente necesita mantener una reference al hilo de ejecución actual para su someMethod , debe esperar a que se complete antes de que pueda comenzar un nuevo thread. Una forma rápida de hacerlo sería agregar

 while ([mSomeThread isExecuting]) { sleep(1); } 

inmediatamente después [mSomeThread start]; .

Por cierto, prefiero volver a implementar NSThread y configurar un NSTimer repetitivo dentro de su implementación main . Algo como:

 - main { @autoreleasepool { [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(someMethod) userInfo:nil repeats:NO]; [[NSRunLoop currentRunLoop] run]; } }