【Swift】処理を停止させる方法!Thread.sleep
この記事からわかること
- Swiftで処理を停止させる方法
- Thread.sleepメソッドの使い方
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Xcode:15.0.1
- iOS:17.1
- Swift:5.9
- macOS:Sonoma 14.1
Swiftで処理を停止させる方法
Swiftで処理を一時的に停止させたい場合や時間を稼ぎたい場合は以下の3つの方法を使用することで処理を停止させることができます。
- Thread.sleep
- sleep
- DispatchQueue
Thread.sleepの使い方
公式リファレンス:sleep(forTimeInterval:)メソッド
Thread
クラスの持つsleep
は指定した秒数だけスレッドを一時停止させるメソッドです。引数forTimeInterval
にTimeInterval
型(Double型のタイプエイリアス)で秒数を渡します。
Thread.sleep(forTimeInterval: 3.0) // 3秒間の一時停止
呼び出しているスレッドを一時停止させるものなのでマルチスレッドで処理を実行している場合は呼び出していないスレッドは動作し続けます。
let thread1 = Thread {
for i in 1...5 {
print("Thread 1: \(i)")
Thread.sleep(forTimeInterval: 1)
}
}
let thread2 = Thread {
for i in 1...5 {
print("Thread 2: \(i)")
Thread.sleep(forTimeInterval: 0.5)
}
}
thread1.start()
thread2.start()
// メインスレッドがここで一時停止(3秒間)
Thread.sleep(forTimeInterval: 3.0)
print("End of the program after sleep")
sleepメソッドの使い方
単にsleep
メソッドも定義されています。こちらの場合は引数にInt32
型で秒数を指定します。
public func sleep(_: UInt32) -> UInt32
sleep(3) // 3秒間の一時停止
DispatchQueueの使い方
DispatchQueue
を使用して遅延処理を実装することも可能です。
DispatchQueue.main.asyncAfter( deadline: DispatchTime.now() + 3) {
// 非同期で3秒後に実行される
}
詳細は以下の記事を参考にしてください。
ご覧いただきありがとうございました。