Executar no próximo ciclo de execução: o que há de errado com o GCD?

Estou tentando estas duas abordagens:

<code>dispatch_async(dispatch_get_main_queue(),^{
    [self handleClickAsync];
});
</code>

e

<code>[self performSelector:@selector(handleClickAsync) withObject:nil afterDelay:0];
</code>

em resposta a um pressionamento de botão.

O segundo permiteUIButton para destacar como seria de esperar e realizar ohandleClickAsync no próximo ciclo de execução (suponho: "algum tempo depois" com certeza). O primeiro não permiteUIButton exemplo para acender até que a operação esteja completamente concluída.

Qual é a maneira correta de fazer isso com o GCD, ou éperformSelector ainda é o único caminho?

questionAnswers(2)

yourAnswerToTheQuestion