ios iphone objective-c concurrency nsoperationqueue

ios - NSOperationQueue mainQueue vs performSelectorOnMainThread?



iphone objective-c (1)

¿Cuál es la diferencia entre esto?

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

y esto:

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


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

Ejecutará el selector a la derecha cuando se le llame. Esto es lo que tiene que usar si desea afectar la interfaz de usuario desde un subproceso en segundo plano. Si dices YES a waitUntilDone , bloqueará el hilo hasta que el método se haya completado.

mainQueue agrega ese bloque a la cola de operaciones del mainthread pero no garantiza cuándo se ejecutará. Podría haber otros elementos en esa cola aún esperando para ejecutarse.