locos recursivos despachados de forma assíncro
Suponha que eu execute este código:
__block int step = 0;
__block dispatch_block_t myBlock;
myBlock = ^{
if(step == STEPS_COUNT)
{
return;
}
step++;
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC / 2);
dispatch_after(delay, dispatch_get_current_queue(), myBlock);
};
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC / 2);
dispatch_after(delay, dispatch_get_current_queue(), myBlock);
O bloco é invocado uma vez do lado de fora. Quando a chamada interna é atingida, o programa falha sem nenhum detalhe. Se eu usar invocações diretas em todos os lugares, em vez de despachos GCD, tudo funcionará be
Eu também tentei chamar dispatch_after com uma cópia do bloco. Não sei se esse foi um passo na direção certa ou não, mas não foi suficiente para fazê-lo funciona
Ideas?