Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20210625-meet-async-await@swift愛好会

iganin
June 25, 2021

 20210625-meet-async-await@swift愛好会

iganin

June 25, 2021
Tweet

More Decks by iganin

Other Decks in Technology

Transcript

  1. getter ( setter は不可 ) - SE-0310, for 文 init(

    deinit は不可 ), subscript ( arrray[i]のようなアクセス) async / await が使用できるケース
  2. • URLSession • MapKit • HealthKit • NSDocument • etc...

    asnyc / await はさまざまなSDKに導入済み
  3. • URLSession • MapKit • HealthKit • NSDocument • etc...

    asnyc / await はさまざまなSDKに導入済み
  4. Continuation • 中断している処理を保持し、処理の再開(resume)を明示的に行える ◦ 実装を見ているとCompletion Handlerに似てる気がする • 再開(resume)は一度しか呼べない • withCheckedContinuation

    ◦ 呼び出しが一度だけかどうか、呼び出し忘れていないかどうかを実行時にチェックしてくれる ◦ 2度呼び出した場合はクラッシュ (CONTINUATION MISUSE) • withUnsafeContinuation ◦ 呼び出しが一度だけか、呼び出し忘れがないかのチェックがない ◦ 2度呼び出した場合はクラッシュ (EXC_BAD_ACCESS) ◦ SDKなどでのパフォーマンス効率化以外では極力使用しない
  5. まとめ • async / await で非同期処理がシンプルにかける • getter, for文 initializer,

    subscript etcで使える • completionHandler の async / await への置き換え • Delegationメソッドのasync / awaitへの置き換え • 複数のSDKにすでに導入済み • Continuationについて • セッションにはなかったですが、 iOS15以上でないと使用できないようです