Как спать на пару миллисекунд в swift 2.2?

пожалуйста, кто-нибудь подскажите, как использовать sleep () за несколько миллисекунд в swift 2.2?

while (true){
    print("sleep for 0.002 seconds.")
    sleep(0.002) // not working
}

но

while (true){
    print("sleep for 2 seconds.")
    sleep(2) // working
}

это работает.

 Mark Berner13 февр. 2017 г., 10:24
сон () занимаетИНТ в качестве параметра. Таким образом, сон (0,002) будет спать 0 секунд. Вместо этого используйте usleep (наносекунды)
 absmiths18 нояб. 2016 г., 18:57
Спящий поток или выход действительны в случае опроса, для одного. Многие интерфейсы не предлагают уведомлений, поэтому вы должны периодически проверять наличие неизбежного асинхронного изменения. Чтобы сделать это без остановки потока между проверками, это излишне измотает процессор и, вероятно, заблокирует ожидаемый вами процесс.

Ответы на вопрос(3)

usleepкак предложено в ответе @ user3441734.

Тем не менее, вы можете решить, является ли режим сна лучшим вариантом: он похож на кнопку паузы, и приложение будет зависать и не отвечать на запросы во время работы.

Вы можете использоватьNSTimer.

 //Declare the timer
 var timer = NSTimer.scheduledTimerWithTimeInterval(0.002, target: self, selector: #selector(MyClass.update), userInfo: nil, repeats: true)
 self, selector: "update", userInfo: nil, repeats: true)



func update() {
    // Code here
}
 user344173404 июл. 2016 г., 18:24
Иногда хорошей идеей является «приостановить» некоторую фоновую задачу на некоторое время ... и сон и сон могут быть очень полезны, легко принять и недорогое решение. К сожалению, очень редко можно увидеть правильное использование сна или уснуть. в общем, лучше этого избегать :-)
 absmiths18 нояб. 2016 г., 18:59
Приложение будет остановлено, только если вы приостановите поток событий, что всегда является ужасной идеей. Работу, отличную от пользовательского интерфейса, все равно следует выполнять вне этого потока. Нормальное использование usleep только блокирует текущий поток.
 sudo01 нояб. 2017 г., 21:12
Эх, скорее всего это плохой знак, если вы звонитеusleep в высокоуровневой части вашего приложения. Он может блокировать очереди GCD, например. Используйте только если абстракции Apple предоставляетдействительно не подходят для того, что вам нужно сделать.
Решение Вопроса

usleep () занимает миллионные доли секунды

usleep(1000000) //will sleep for 1 second
usleep(2000) //will sleep for .002 seconds

ИЛИ ЖЕ

 let ms = 1000
 usleep(useconds_t(2 * ms)) //will sleep for 2 milliseconds (.002 seconds)

ИЛИ ЖЕ

let second: Double = 1000000
usleep(useconds_t(0.002 * second)) //will sleep for 2 milliseconds (.002 seconds)
 Harris09 авг. 2018 г., 23:14
Спасибо @HansTerjeBakke. Я обновил ответ.
 Hans Terje Bakke09 авг. 2018 г., 11:35
UInt32 (0,002) равно 0. Он должен читатьusleep(UInt32(0.002 * second))

func usleep(_: useconds_t) -> Int32 (ИмпортироватьDarwin или жеFoundation ...)

 Harris23 нояб. 2016 г., 05:37
usleep () занимает миллионные доли секунды, поэтому usleep (1000000) будет спать в течение 1 секунды

Ваш ответ на вопрос