2014-09-26 7 views
11

Wiem, że dispatch_time to czas zgodny z zegarem urządzenia i jeśli urządzenie przejdzie w stan uśpienia, zegar również śpi. Z drugiej strony, dipatch_walltime to czas zgodny z zegarem ściennym, który nigdy nie zasypia. Moje pytania brzmią, czy jest jakakolwiek różnica, zależnie od wydajności, czy inna, aby użyć jednej lub drugiej w różnych sytuacjach? Czy ktoś może podać mi więcej szczegółów, ponieważ dokumenty Apple nie są wyczerpujące.Jaka jest różnica między dispatch_time i dispatch_walltime iw jakich sytuacjach lepiej jest użyć jednego lub drugiego?

Na przykład piszę klasę Timer, która działa w określonych odstępach czasu. Również odległość może wynosić od 10 do 30 sekund. Którego powinienem użyć dispatch_time lub dispatch_walltime, pod względem wydajności.

Odpowiedz

19

dispatch_time przestaje działać, gdy komputer idzie spać. dispatch_walltime nadal działa. Więc jeśli chcesz zrobić akcję za godzinę, ale po 5 minutach komputer przejdzie w stan uśpienia na 50 minut, dispatch_walltime wykona godzinę od teraz, 5 minut po przebudzeniu komputera. dispatch_time zostanie wykonany po uruchomieniu komputera na godzinę, czyli 55 minut po jego pobudce.

Powiązane problemy