2009-10-28 23 views
5

Quiero programar un hilo después de completar un hilo.programar un hilo después de un hilo en la aplicación iphone

¿Es posible? ¿Cómo?

Por ejemplo (para especificar la necesidad)

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    // 1. response - schedule myThread 
    // 2. response - schedule a new thread which will be executed after myThread 
    // 3. response - schedule a new thread which will be executed after second thread 
    // ..... 
} 
+2

¿Me pregunto por qué todos estos deben ser hilos separados, si están ejecutando un conjunto de tareas estrictamente en serie? –

+0

¿Tiene el ejemplo de relleno para representar este caso? Lo necesito ahora – wod

Respuesta

10

Si utiliza NSOperations puede utilizar el método addDependency: para especificar las dependencias de una operación.

NSInvocationOperation le será útil si sigue esta ruta.

Editar: Acabo de volver a leer el tema y estás en el iPhone para que no tengas bloques, pero como referencia, si tienes bloques disponibles, NSBlockOperation es aún mejor.

Tenga en cuenta que al utilizar estos métodos para realizar operaciones asíncronas (y suponiendo que el código en ellas utiliza liberación automática) será responsable de crear instancias de un NSAutoreleasePool cuando su método comience a ejecutarse y liberarlo o drenarlo al salir.

+1

Bloques, y por lo tanto NSBlockOperation no está disponible en iPhone (todavía). (Además, sus enlaces apuntan a la documentación de Mac OS X, ya que esta era una pregunta de iPhone, la documentación de iPhone OS sería más apropiada.) – oefe

+0

Editado para actualizar los enlaces – nall

+0

** Actualización: ** A partir de iOS 4.0 ahora tenemos bloques . – memmons

2

(1) Puede sondear la propiedad de los hilos isFinished.

(2) Puede registrar su objeto de despacho/control para recibir la notificación de los hilos NSThreadWillExitNotification. Para un control más preciso, puede subclase NSThread y enviar una notificación como el último acto antes de que se detenga el hilo. Luego, en el controlador de notificaciones de control de objetos puede sondear isFinished para asegurarse de que esté listo antes de iniciar el siguiente hilo.

Ver Thread Programming Guide y NSThread Class Guide.