В Java вы можете приостановить выполнение текущего потока на некоторое время, используя Thread.sleep()
. Есть ли что-то подобное в Objective-C?
112
В Java вы можете приостановить выполнение текущего потока на некоторое время, используя Thread.sleep()
. Есть ли что-то подобное в Objective-C?
Да, есть + [NSThread sleepForTimeInterval:]
(Чтобы вы знали, на вопросы в будущем, Objective-C - это сам язык; библиотека объектов (по крайней мере, один из них) - это Cocoa.)
Сон в течение одной секунды на Java:
Сон в течение одной секунды в цели C:
источник
Почему ты спишь? Когда вы спите, вы блокируете пользовательский интерфейс, а также любую фоновую загрузку URL-адресов не в других потоках (асинхронные методы NSURL по-прежнему работают в текущем потоке).
Скорее всего, вы действительно хотите выполнитьSelector: withObject: AfterDelay. Это метод в NSObject, который вы можете использовать для вызова метода через некоторый заранее заданный интервал позже - он планирует вызов, который будет выполнен позже, но все остальные вещи, которые обрабатывает поток (например, пользовательский интерфейс и загрузка данных), будут все еще продолжаем.
источник
Конечно, вы также можете использовать стандартные вызовы Unix sleep () и usleep (). (Однако при написании Cocoa я бы остановился на [NSThread sleepForTimeInterval:].)
источник
Если вы используете NSThread sleepForTimeInterval (код с комментариями) для сна, выборка данных будет заблокирована, но + [NSThread sleepForTimeInterval:] (метод checkLoad) не будет блокировать выборку данных.
Мой пример кода, как показано ниже:
источник
usleep () также можно использовать, поскольку ive временами приостанавливал текущий поток
источник