Realizar en el próximo bucle de ejecución: ¿Qué está mal con GCD?

Estoy probando estos dos enfoques:

dispatch_async(dispatch_get_main_queue(),^{
    [self handleClickAsync];
});

y

[self performSelector:@selector(handleClickAsync) withObject:nil afterDelay:0];

En respuesta a una pulsación de botón.

El segundo permite elUIButton para resaltar como uno esperaría y realizar elhandleClickAsync en el siguiente ciclo de ejecución (supongo: "en algún momento más tarde", por supuesto). El primero no permite elUIButton Instancia para iluminar hasta que la operación esté completamente terminada.

¿Cuál es la forma correcta de hacer esto con GCD, o esperformSelector sigue siendo el único camino?