5

Ich mache viele asynchrone Ausführung mit Blöcken in meiner Anwendung.Wie alle Threads zu töten, die sie nicht den Hauptthread sind?

Aber ich muss alle Threads töten, die sie nicht der Hauptthread sind, wenn ein bestimmtes Ereignis in meiner Anwendung erscheint.

So ist es möglich, die Ausführung aller Blöcke zu stoppen? Oder mit anderen Worten, töten alle Threads, die sie nicht den Hauptthread sind?

PS: Ich habe versucht, Blöcke innerhalb NSOperationQueue auszuführen, aber meine erste Operation startet nicht in der guten Zeit, während das folgende tut.

Antwort

4

Wenn Sie Threads abbrechen müssen, um Operationen abzubrechen, tun Sie es wahrscheinlich falsch. NSOperationQueue oder ähnliche Lösung (wie die Implementierung der Abbruchlogik in Ihren Blöcken) ist IMHO der richtige Weg zu gehen. Wenn Sie Probleme mit der Operationswarteschlange haben, versuchen Sie es zu lösen, vermeiden Sie das Problem nicht, indem Sie ein schlechteres erstellen.

+0

Meine Ansicht zeigt Bilder, und ich beginne mit dem Laden ihrer Vorschaubilder und asynchron, ich lade das reale Bild und sobald es geladen ist, wird es anstelle der Miniaturansicht angezeigt. Wenn der Benutzer jedoch ein schweres Foto hat, das im Hintergrund geladen wird und wenn er zum nächsten Foto wischt, wird das vorherige schwere Foto im Hintergrund weiter geladen, und wenn das neue Foto schwach ist, endet das Laden des schweren Fotos nach und Es ersetzt das neue Foto in der Ansicht. In meinem Code habe ich versucht, alle Hintergrundthreads zu stoppen, wenn der Benutzer zum nächsten Foto wischt. Das ist mein Problem. –

+0

Das ist ein klassischer Anwendungsfall, der keine Threads töten muss. Ich schlage vor, dass Sie das Laden des Bildes als eine kündbare "NSOperation" implementieren und das Laden des Bildes abbrechen, wenn das Bild nicht länger benötigt wird. – zoul