3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

swiftで画面の表示が遅い時の対処法(iosのUIを更新する処理はメインスレッドで行う)

Last updated at Posted at 2019-06-19

#前回解決できなかったこと
サーバも含めたiOSアプリ開発を1から10まで説明(2/2) *コーディングだけでUIもつくるよ

part1:サーバも含めたiOSアプリ開発を1から10まで説明(1/2)
part2: サーバも含めたiOSアプリ開発を1から10まで説明(2/2) *コーディングだけでUIもつくるよ
アプデ1:swiftで画面の表示が遅い時の対処法(iosのUIを更新する処理はメインスレッドで行う)⬅️イマココ
アプデ2:オフラインでもアプリが動くようにとSNSシェア機能の追加アプデ

この記事で作ったアプリでは、サーバからjsonをもらい、scrollViewやButtonを作るプログラムを走らせましたが、表示が遅い。
しかし、配置はされているっぽくタップすれば動く。という謎挙動が起こっていました。
今回、その課題を解決することができたのでシェアします。

#原因&解決策
断定できたわけではありませんが、おそらくメインスレッドではないところでdo関数の処理が行われていたことと思われます。

まず前提として、iosのUIを更新する処理は単一のスレッド(main thread)から実行しなければならない、というルールがあるそうです。しかし、前回のプログラムではどういう理由かはわかりませんが画面描画の大部分を占めていたdo関数がメインスレッドで実行はされていなかったと考えられます。

そこで

DispatchQueue.main.async {
    do {}
}

といった形でDispatchQueue.main.async {}で囲んであげて、メインスレッドで処理することを明示的に示したら、起動時にスッとViewが作られるようになりました!

3
5
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
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?