Converter um módulo pesado de DispatchQueue em assíncrono/aguardar
Quando usar: Você possui um módulo que mistura DispatchQueue, manipuladores de conclusão e fechamentos @escaping; você quer assíncrono/espera.
Pré-requisitos
- Xcode com Swift 5.9+ (modo Swift 6 se você quiser simultaneidade estrita) — Instale o Xcode da App Store
- Habilidade instalada — /plugin marketplace add kylehughes/the-unofficial-swift-concurrency-migration-skill
Fluxo
-
Solicite um plano de migraçãoAcompanhe-me na migração de NetworkService.swift para async/await, citando o Swift Concurrency Migration Guide.✓ Copiado→ Planeje referências de artigos nomeados no guia
-
Aplicar passo a passoComece com a superfície da API pública — converta os métodos do manipulador de conclusão em assíncrono/aguarde.✓ Copiado→ O código usa APIs assíncronas idiomáticas, não retornos de chamada de wrapper
-
Lidar com cancelamento e isolamentoAdicione o cancelamento de tarefas e decida o isolamento do ator para o cache.✓ Copiado→ Task.checkCancellation adequado + isolamento explícito do ator
Resultado: O módulo migrou de forma limpa com o raciocínio vinculado à orientação da própria Apple.
Armadilhas
- Envolvendo retornos de chamada em withCheckedContinuation sem corrigir a propriedade — Migre a API raiz primeiro; não deixe continuações como pontes permanentes