2015-08-11 2 views
1

Это первый раз, когда я использовал GCD, признаюсь, извините, если я был глуп. У меня есть команда dispatch_after, которая действует как удобная задержка для меня.dispatch_after время триггеры сразу

Моя проблема заключается в том, что когда я посылаю

dispatch_after(500000000000, dispatch_get_main_queue()){ 
    println("triggered") //or any other code 
} 

замыкание срабатывает немедленно (например, я испытал это и сразу же «срабатывает» отпечатки). Это займет больше времени? Как 500 секунд дольше.

Благодаря :)

ответ

8

Первый параметр dispatch_after(_:_:_:) не является задержка, но момент времени. От the docs:

, когда: Временной этап, возвращаемый dispatch_time или dispatch_walltime.

Обсуждение Эта функция ждет, пока заданное время, а затем асинхронно добавляет блок в указанной очереди.

Вы должны построить задержку относительно текущего времени, используя dispatch_time(_:_:):

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(500 * NSEC_PER_SEC)) 
dispatch_after(delayTime, dispatch_get_main_queue()) { ... } 
Смежные вопросы