Wie hält man ein NSThread sub-thread im iphone
Erstellte ich ein sub-thread mit NSThread im Haupt-thread
NSThread *newThread = [[NSThread alloc] initWithTarget:self selector:@selector(MyThread:) object:timer];
5 sec später habe ich verwendet [newThread Abbrechen] im Haupt-thread zum beenden der sub-thread,aber es hat nicht funktioniert,
Methode MyThread: in newThread noch arbeiten
also,was ist die richtige Antwort, um zu stoppen newThread,THX
eigentlich [newThread isCancelled] JA,aber Selektor MyThread war noch woking
- timer ist NSTimer Instanz
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
cancel
Methode informiert lediglich den thread, dass es storniert wird (wie Sie schon erwähnten änderungen derisCancelled
zuYES
. Es ist dann die Verantwortung der thread selbst, um diese zu überprüfen und zu beenden. Zum Beispiel, in IhremMyThread:
Methode Sie könnten dies tun:Sollten Sie diese in regelmäßigen Abständen überprüfen, und beenden Sie innerhalb der den Faden wie gezeigt; andernfalls ist die
cancel
keine Wirkung.isCancelled
zurückYES
. Sollte der thread dann nicht weiter ausgeführt werden. Es nicht zwingen, den thread sofort zu stoppen die Ausführung, aber das wäre lästig, wenn es hatte keine Ressourcen öffnen.isCancelled
Mechanismus -- sicher zu töten, einen thread aus einem anderen thread.-(void)cancel
Diskussion
Die Semantik dieser Methode sind die gleichen wie diejenigen verwendet werden, für die NSOperation-Objekt. Diese Methode setzt Status-Informationen in den receiver, der dann auch durch das isCancelled-Methode. Threads, die Unterstützung Stornierung sollten in regelmäßigen Abständen rufen Sie das isCancelled-Methode, um zu bestimmen, wenn der thread in der Tat wurde abgebrochen, und beendet, wenn es wurde.
mehr Informationen finden Sie unter NSThread API-Referenz