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.