Удобная замена dispatch_after в Swift
В стареньком Objective-C есть готовый сниппет в XCode, позволяющий выполнять блок на следующем тике в зависимости от установленной задержки. В Swift же появилась прикольная фишка, что если функция принимает последним параметром кложуру, то можно опустить этот параметр при вызове, а сразу же после функции открыть фигурную скобочку анонимной функции.
Выглядит все это как-то вот так:
func delay(seconds: Double, closure: () -> ()) {
dispatch_after(
dispatch_time(DISPATCH_TIME_NOW, Int64(seconds * Double(NSEC_PER_SEC))),
dispatch_get_main_queue(),
closure
);
}
В итоге на практике все стало гораздо проще
print("Before");
delay(0.5) {
print("After delay");
}
print("After");