LoginSignup
5
4

More than 3 years have passed since last update.

Swift5でメインスレッドかどうか確認する

Posted at

SwiftではUIの更新はMain threadで実行しなければならないというルールがあります。
そのため非同期的にMain threadで処理する場合は DispatchQueue.main.async を使用しますが、非同期処理をする必要のない箇所で無闇に使用してしまうと処理フローの制御がしづらくなるなどの問題が起きてしまうため、サブスレッドのタスク内でのUIの更新などに限定する必要があります。

メインスレッドで実行されているかどうか確認する方法

print(Thread.current.isMainThread)

スレッドへの理解が浅いままasyncを使用していてUI更新が重くなり挙動がおかしくなっていたので、上記で確認しつつ不要な場合は同期処理で行うように修正しました。

参考

DispatchQueueによる非同期処理を見直す
Swift4でDispatchQueueを使う

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4