Convertir un module lourd DispatchQueue en async/await
Quand l'utiliser : Vous possédez un module mélangeant DispatchQueue, des gestionnaires de complétion et des fermetures @escaping ; vous voulez asynchrone/attendre.
Prérequis
- Xcode avec Swift 5.9+ (mode Swift 6 si vous souhaitez une concurrence stricte) — Installez Xcode depuis l'App Store
- Compétence installée — /Le marché des plugins ajoute Kylehughes/the-unofficial-swift-concurrency-migration-skill
Déroulement
-
Demandez un plan de migrationExpliquez-moi tout au long de la migration de NetworkService.swift vers async/await, en citant le Guide de migration Swift Concurrency.✓ Copié→ Plans de référence nommés articles dans le guide
-
Appliquer étape par étapeCommencez par la surface de l'API publique : convertissez les méthodes de gestion d'achèvement en async/await.✓ Copié→ Le code utilise des API asynchrones idiomatiques, pas des rappels de wrapper
-
Gérer l’annulation et l’isolementAjoutez l'annulation de tâche et décidez de l'isolement des acteurs pour le cache.✓ Copié→ Task.checkCancellation appropriée + isolation explicite des acteurs
Résultat : Le module a migré proprement avec un raisonnement lié aux propres conseils d'Apple.
Pièges
- Encapsuler les rappels dans withCheckedContinuation sans corriger la propriété — Migrez d'abord l'API racine ; ne laissez pas les suites comme ponts permanents