【Xcode/Swift】◯秒後に処理を行う遅延実行のやり方~Dispatch、#selector、sleepの使い方~

この記事では、遅らせて処理を行う方法について解説していきたいと思います。

実装方法

実装方法は、大きく分けて以下の3パターンあります。一つ一つ解説していきたいと思います。

  1. Dispatchを使用した遅延実行
  2. #selectorを使用した遅延実行
  3. sleepを使用した遅延実行

1. Dispatchを使用した遅延実行

Dispatchが一番王道なやり方かと思います。やり方は簡単です。

DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
    print("3秒経ちました。")
}

このDispatchの中に記述すると、5秒後に処理が行われます。

.now() + 5.0で、今から5秒後というのを表しています。なので、この数値を変えれば好きな秒数で処理を遅らせることができます。

2. #selectorを使用した遅延実行

#selectorなので、関数として切り出せます。

self.perform(#selector(hogehuga), with: nil, afterDelay: 5.0)
@objc func hogehuga() {
    print("5秒経ちました。")
}

afterDelay: 5.0のところで、秒数を変更できます。

3. sleepを使用した遅延実行

これは、この処理を◯秒後に行うみたいな書き方ではなく、「◯秒間止める」というふうなイメージです。

print("スリープ!")
Thread.sleep(forTimeInterval: 5.0)
print("5秒経ちました。")

ちなみに、sleepだけでも呼ぶことができます。ただし、引数はInt型です。

print("スリープ!")
sleep(5)
print("5秒経ちました。")