iOS 15以降のSwiftランタイムはコンカレンシー(並行演算)をサポートし、またXcode 13.2以降ではこの機能をiOS 13までバックデプロイしました。
コンカレンシーを使うと、これまでのようにスレッドをブロックすることなく、あたかも同期的に処理が書けますが、内部的にはきちんと非同期に動きます。
例えばURLSession
のdata(from:delegate:)
などがこの機能を利用しています。
非同期処理にも関わらず、スレッドをブロックせずに同期的のようにコードが書けるので、コールバックを用いる方法よりも遥かに書きやすくなるでしょう。
- Delegateで受け取っていたAPIの結果を、コンカレンシー形式で受け取るように変更する
- ViewControllerを閉じた時に
deinit
が呼ばれることを確認する