PIYO - Tech & Life -

SwiftでJSのsetTimeoutみたいなことをする

iOS Swift

iOSで仕方なく少し待ってから処理を実行するてのを時々やりたくなるんですが、毎度書き方を忘れるので、自分用にメソッドを定義して使っています。

どこかグローバルなところに定義しとくとアプリ全体で使えるので、AppDelegate.swiftの一番下あたりに定義を書いておきます。

func delay(_ delay: Double, closure: @escaping ()->()) {
  DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
    closure()
  }
}

で使うときはこんな感じ。

delay(1.0) {
  // do something
  self.performSegue(...) みたいな
}

最悪SDKのAPIが変わったとしてもdelay内部だけ書き換えればいいので楽。