NSOperationQueue mainQueue vs performSelectorOnMainThread?

Quelle est la différence entre ceci:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ [self doSomthing:object]; }]; 

et ça:

 [self performSelectorOnMainThread:@selector(doSomething:) withObject:object waitUntilDone:NO] 

 [self performSelectorOnMainThread:@selector(doSomething:) withObject:object waitUntilDone:NO] 

Sera le sélecteur droit quand il est appelé. C'est ce que vous devez utiliser si vous voulez affecter l'interface user à partir d'un thread d'arrière-plan. Si vous dites YES à waitUntilDone il bloquera le thread jusqu'à ce que la méthode soit terminée.

mainQueue ajoute ce bloc à la queue d'opération du mainthread mais ne garantit pas quand il sera exécuté. Il peut y avoir d'autres éléments dans cette queue en attente d'exécution.