2009-10-28 15 views
5

Desidero pianificare un thread dopo il completamento di un thread.pianificazione di una discussione dopo una discussione nell'applicazione iphone

È possibile? Come?

Per esempio (per specificare il mio bisogno)

- (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

Ho il coraggio di chiedere perché tutti questi devono essere thread separati, se stanno eseguendo una serie di attività strettamente seriali? –

+0

Avete un esempio di riempimento per rappresentare questo caso, ne ho bisogno ora – wod

risposta

10

Se si utilizza NSOperations è possibile utilizzare il metodo addDependency: per specificare le dipendenze di un'operazione.

NSInvocationOperation probabilmente ti sarà utile se segui questo percorso.

Modifica: ho appena riletto l'oggetto e tu sei su iPhone in modo da non avere blocchi, ma per riferimento, se hai blocchi disponibili, NSBlockOperation è ancora meglio.

Si noti che quando si utilizzano questi metodi per eseguire operazioni asincrone (e supponendo che il codice in essi utilizzi autorelease) sarete responsabili della creazione di un'istanza di NSAutoreleasePool quando il vostro metodo inizia a funzionare e rilasciandolo/scaricandolo all'uscita.

+1

Blocchi, e quindi NSBlockOperation non è ancora disponibile su iPhone (ancora). (Inoltre, i tuoi link rimandano alla documentazione di Mac OS X, poiché questa era una domanda per iPhone, la documentazione dell'iPhone OS sarebbe più appropriata.) – oefe

+0

Modificato per aggiornare i collegamenti – nall

+0

** Aggiornamento: ** A partire da iOS 4.0 ora abbiamo blocchi . – memmons

2

(1) È possibile interrogare i filetti isFinished proprietà.

(2) È possibile registrare l'oggetto di dispacciamento/controllo per ricevere la notifica di thread NSThreadWillExitNotification. Per un controllo più preciso, è possibile creare sottoclassi NSThread e inviare una notifica come ultimo atto prima che il thread si arresti. Quindi nel gestore di notifica degli oggetti di controllo è possibile eseguire il polling isFinished per assicurarsi che venga eseguito prima di avviare il thread successivo.

Vedere Thread Programming Guide e NSThread Class Guide.

Problemi correlati