W Javie możesz zawiesić wykonywanie bieżącego wątku na pewien czas używając Thread.sleep()
. Czy jest coś takiego w Objective-C?
ios
objective-c
cocoa-touch
sleep
levi
źródło
źródło
Spanie przez jedną sekundę w Javie:
Spanie przez jedną sekundę w celu C:
źródło
Dlaczego śpisz? Gdy śpisz, blokujesz interfejs użytkownika, a także ładowanie dowolnego adresu URL w tle, którego nie ma w innych wątkach (przy użyciu metod asynchronicznych NSURL nadal działa w bieżącym wątku).
Szanse są tym, czego naprawdę chcesz, to performSelector: withObject: AfterDelay. Jest to metoda na NSObject, której możesz użyć do wywołania metody w pewnym z góry określonym interwale później - planuje wywołanie, które zostanie wykonane później, ale wszystkie inne rzeczy obsługiwane przez wątek (takie jak ładowanie interfejsu użytkownika i danych) będą nadal kontynuować.
źródło
Oczywiście możesz także użyć standardowych wywołań sleep () i usleep () w Uniksie. (Jeśli piszę Cocoa, pozostałbym przy [NSThread sleepForTimeInterval:].)
źródło
Jeśli użyjesz NSThread sleepForTimeInterval (kodu z komentarzem) do uśpienia, pobieranie danych zostanie zablokowane, ale + [NSThread sleepForTimeInterval:] (metoda checkLoad) nie zablokuje pobierania danych.
Mój przykładowy kod jak poniżej:
źródło
Funkcja usleep () może być również używana jako ive, aby czasami wstrzymywać bieżący wątek
źródło