Пример 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 сек.
Добавить комментарий