Estaba teniendo problemas para probar algunas unidades de algún gran código central de despacho con el marco de prueba de unidad integrado de Xcode, SenTestingKit. Pude hervir mi problema hecho a esto. Tengo una prueba de unidad que construye un bloque e intenta ejecutarlo en el hilo principal. Sin embargo, el bloque nunca se ejecuta realmente, por lo que la prueba se bloquea porque es un envío síncrono.dispatch_sync en la cola principal se cuelga en la prueba de la unidad
- (void)testSample {
dispatch_sync(dispatch_get_main_queue(), ^(void) {
NSLog(@"on main thread!");
});
STFail(@"FAIL!");
}
¿Qué hay en el ambiente de prueba que hace que esto se cuelgue?
Buena pregunta y espero la respuesta correcta. He encontrado varias veces que el uso de dispatch_sync en la cola principal termina en un punto muerto, así que lo evito en general. –
@ D.C. varias veces o SIEMPRE? Tengo curiosidad por saber cómo '' dispatch_sync (dispatch_get_main_queue() '** while ** en el hilo principal no creará dead lock !? – Honey