Пример dispatch_after

Теоретическая часть работы GCD и dispatch_after в частности описаны в статье Multithreading в Swift, отложенное действие dispatch_after

Предположим у нас есть метод drop() который генерирует объект в верхней части экрана, и заставляет его падать вниз.  Тогда, если написать следующий код:

//
// proSwift.ru
//
     
 for cnt in 1...40 {
            
     let delay = Int64( Double(cnt)/5 * Double(NSEC_PER_SEC) )
     let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, delay)
     dispatch_after(dispatchTime, dispatch_get_main_queue()) {
        self.drop()
     }
}

… то объекты будут появляться каждые 0.2 секунды. И соответсвенно таких оБъектов будет 40. Это зависит от того, сколько раз мы запустим цикл.

В каждом шаге цикла мы увеличиваем время задержки на 0,2 секунды и заставляем выполняться метод drop() все с большей и большей задержкой. В итоге мы получаем генерацию объектов падения каждые 0,2 сек.

Добавить комментарий

Ваш адрес email не будет опубликован.

*

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