DispatchQueue가 많은 모듈을 async/await로 변환
언제 쓸까: DispatchQueue, 완료 처리기 및 @escaping 클로저를 혼합하는 모듈을 소유하고 있습니다. 비동기/대기를 원합니다.
사전 조건
- Swift 5.9+를 사용하는 Xcode(엄격한 동시성을 원하는 경우 Swift 6 모드) — App Store에서 Xcode 설치
- 스킬 장착 — /플러그인 마켓플레이스에 kylehughes/the-unofficial-swift-concurrency-migration-skill 추가
흐름
-
마이그레이션 계획을 요청하세요Swift 동시성 마이그레이션 가이드를 인용하여 NetworkService.swift를 async/await로 마이그레이션하는 과정을 안내해 주세요.✓ 복사됨→ 가이드에 있는 기사라는 이름의 계획 참조
-
단계별로 적용공개 API 표면으로 시작하세요. 완료 처리기 메서드를 async/await로 변환하세요.✓ 복사됨→ 코드는 래퍼 콜백이 아닌 관용적 비동기 API를 사용합니다.
-
취소 및 격리 처리작업 취소를 추가하고 캐시에 대한 행위자 격리를 결정합니다.✓ 복사됨→ 적절한 Task.checkCancellation + 명시적 행위자 격리
결과: 모듈은 Apple의 자체 지침에 따른 추론을 통해 깔끔하게 마이그레이션되었습니다.
함정
- 소유권을 수정하지 않고 withCheckedContinuation에서 콜백 래핑 — 먼저 루트 API를 마이그레이션하세요. 연속을 영구 브리지로 두지 마십시오