Próbuję te dwa podejścia:Wykonaj pętlę Next Run: Co jest nie tak z GCD?
dispatch_async(dispatch_get_main_queue(),^{
[self handleClickAsync];
});
i
[self performSelector:@selector(handleClickAsync) withObject:nil afterDelay:0];
w reakcji na naciśnięcie przycisku.
Drugi pozwala UIButton
aby podkreślić, jak można by się spodziewać i przeprowadzenia handleClickAsync
na następnej pętli biegu (przypuszczam, że: „Jakiś czas później” na pewno). Pierwsza nie pozwala, aby instancja UIButton
się zaświeciła, dopóki operacja nie zostanie całkowicie wykonana.
Co to jest poprawny sposób zrobienia tego z GCD, czy jest to tylko performSelector
?
Przypuszczalnie dzwonisz to od wewnątrz innej kolejce wysyłki? Jeśli tak, uruchomi wszystkie polecenia sekwencyjnie w kolejce. Czy możliwe jest wywołanie tej metody przed rozpoczęciem operacji? –
Nie jestem pewien. Wzywam to bezpośrednio z 'touchesEnded', który przychodzi za darmo na podklasę' UIView' (lub Uibutton w tym przypadku). –
Nie jestem pewien, dlaczego tworzysz powiązanie między dispatch_async a uruchomieniem runloopa ... –