5

Eseguo molte operazioni asincrone con blocchi nella mia applicazione.Come uccidere tutti i thread che non sono il thread principale?

Ma ho bisogno di uccidere tutti i thread che non sono il thread principale se un determinato evento appare nella mia applicazione.

Quindi è possibile interrompere l'esecuzione di tutti i blocchi? O in altri termini, uccidere tutti i thread che non sono il thread principale?

PS: Ho cercato di eseguire blocchi all'interno di NSOperationQueue, ma la mia prima operazione non inizia al momento opportuno, mentre lo segue.

risposta

4

Se è necessario eliminare i thread per annullare le operazioni, probabilmente lo si sta facendo male. NSOperationQueue o una soluzione simile (come implementare la logica di cancellazione nei blocchi) IMHO è la strada giusta da percorrere. Se si verificano problemi con la coda di operazioni, provare a risolverlo, non evitare il problema creando uno peggiore.

+0

La mia vista visualizza le immagini e inizio caricando le loro miniature e in modo asincrono, carica la foto reale e non appena viene caricata, viene visualizzata al posto della miniatura. Ma se l'utente ha una foto pesante che carica in background e se passa alla foto successiva, la foto precedente continua a caricare in background, e se la nuova foto è leggera, il caricamento della foto pesante termina dopo, e sostituisce la nuova foto sulla vista. Quindi, nel mio codice, ho provato a interrompere tutti i thread degli sfondi quando l'utente passa alla foto successiva. Questo è il mio problema –

+0

Questo è un caso d'uso classico che non ha bisogno di uccidere alcun thread. Ti suggerisco di implementare il caricamento dell'immagine come 'NSOperation' cancellabile e di annullare il caricamento dell'immagine quando l'immagine non è più necessaria. – zoul

Problemi correlati