iOSDC Japan 2024
レギュラートーク(20分)

refreshableから学ぶSwift Concurrency

the_uhooi uhooi the_uhooi
4

refreshable() はSwiftUIのモディファイアであり、 ListScrollView などのビューに付けるだけでPull-to-Refreshを実現できます。
例えばSNSのタイムラインを下に引っ張るだけで最新の投稿を取得できます。

非常に便利なrefreshableですが、このような経験はありませんか?

  • 処理の完了を待たずにインジケータ(くるくる)が消える
  • 処理中に画面が固まる
  • 処理が途中でキャンセルされる

私はすべて経験しました。
これらはSwiftUIにおけるビューの再描画やSwift Concurrencyを正しく理解していないことで起こります。

本トークではrefreshableが正しく動作しないコードを修正していき、それを通してビューの再描画やSwift Concurrencyについての理解を深めます。

もくじ

  1. refreshableの概要
  2. 悪いサンプルコードの紹介
  3. サンプルコードの修正
    • 処理の完了までインジケータを表示し続ける
    • 処理中に画面が固まらないようにする
    • 処理が途中でキャンセルしないようにする
  4. まとめ

refreshableはSwiftUIやSwift Concurrencyを学ぶいい教材でもあるので、一緒に学んでいきましょう!