Czy istnieje prostszy sposób oczekiwania na określony czas w Cocoa niż to, co wymyśliłem poniżej?Oczekiwanie na określony czas w kakao
- (void) buttonPressed {
[self makeSomeChanges];
// give the user some visual feedback and wait a bit so he can see it
[self displayThoseChangesToTheUser];
[self performSelector:@selector(buttonPressedPart2:) withObject:nil afterDelay:0.35];
}
- (void) buttonPressedPart2: (id)unused {
[self automaticallyReturnToPreviousView];
}
Żeby było jasne, nie ma funkcjonalny problem z tym kodem - moim jedynym wołowiny jest stylistyczny jeden. W moim przypadku przepływ jest na tyle prosty, że działa, ale staram się go enkapsulować lub wrzucać pewne warunki i rzeczy mogą okazać się brzydkie. To było trochę dokuczliwy na mnie, że nie mogę znaleźć sposób, aby czekać, a następnie powrócić do tego samego punktu w kodzie tak (fikcyjnej) Przykład:
- (void) buttonPressed {
[self doStuff];
[UIMagicUnicorn waitForDuration:0.35];
[self doStuffAfterWaiting];
}
i oba zablokuje wątek od robienia czegokolwiek innego. źle, jeśli jest w głównym U.I. wątek. – pestilence669
Prawda. Jeśli potrzebujesz, aby interfejs był responsywny w tym okresie, podejście zasugerowane w pytaniu, NSTimer uruchamiające się raz (jak sugerujesz) lub wątek tła wykonujący to opóźnienie byłoby lepsze. –
Dzięki - właśnie o to się zastanawiałem, prawdopodobnie natknęłbym się na to, gdyby "sen" był jednym z wielu synonimów "oczekiwania", o którym myślałem. Dziękuję również Pestilence za ostrzeżenia o tym, kiedy * nie * używać tych. –