ios - dispatch_async - swift operationqueue




iOS-Ausführung im Hauptthread sicherstellen (3)

Gibt es irgendeine Regel, die ich befolgen kann, um sicher zu sein, dass meine App nur im Hauptthread meinen eigenen Code ausführt?

Normalerweise müssen Sie nichts tun, um dies sicherzustellen - Ihre Liste von Dingen reicht normalerweise aus. Wenn Sie nicht mit einer API interagieren, die zufällig einen Thread erzeugt und Ihren Code im Hintergrund ausführt, werden Sie den Hauptthread ausführen.

Wenn Sie wirklich sicher sein wollen, können Sie Dinge tun wie

[self performSelectorOnMainThread:@selector(myMethod:) withObject:anObj waitUntilDone:YES];

um eine Methode für den Haupt-Thread auszuführen. (Es gibt auch eine GCD-Entsprechung.)

Diese Frage hat hier bereits eine Antwort:

Ich möchte wissen, wie ich meine function im Hauptthread aufrufen function .

Wie stelle ich sicher, dass meine function im Hauptthread aufgerufen wird ?

(Dies folgt einer früheren question von mir).


Das wird es tun:

[[NSOperationQueue mainQueue] addOperationWithBlock:^ {

   //Your code goes in here
   NSLog(@"Main Thread Code");

}];

Hoffe das hilft!


Wenn Sie iOS> = 4 verwenden

dispatch_async(dispatch_get_main_queue(), ^{
  //Your main thread code goes in here
  NSLog(@"Im on the main thread");       
});




shared-resource