Блог :. Удобная замена dispatch_after в Swift

Удобная замена dispatch_after в Swift

26 Апр, 2016

В стареньком 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");