DispatchQueue を多用するモジュールを非同期/待機に変換する
使うタイミング: あなたは、DispatchQueue、完了ハンドラー、および @escaping クロージャを混合したモジュールを所有しています。 非同期/待機が必要です。
前提条件
- Xcode と Swift 5.9 以降 (厳密な同時実行が必要な場合は Swift 6 モード) — App StoreからXcodeをインストールする
- スキルがインストールされています — /plugin Marketplace add kylehughes/the-unofficial-swift-concurrency-migration-skill
フロー
-
移行計画を尋ねるSwift Concurrency Migration Guide を引用しながら、NetworkService.swift を async/await に移行する手順を説明します。✓ コピーしました→ ガイド内の計画参照名の記事
-
段階的に適用するパブリック API サーフェスから開始します。完了ハンドラー メソッドを async/await に変換します。✓ コピーしました→ コードはラッパー コールバックではなく慣用的な非同期 API を使用します
-
キャンセルと隔離を処理するタスクのキャンセルを追加し、キャッシュのアクターの分離を決定します。✓ コピーしました→ 適切な Task.check cancelance + 明示的なアクター分離
結果: モジュールは、Apple 独自のガイダンスに関連付けられた推論によりクリーンに移行されました。
注意点
- 所有権を固定せずに withCheckedContinuation でコールバックをラップする — まずルート API を移行します。 継続を永続的なブリッジとして残さないでください