인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

swift-concurrency

swift-concurrency

Implement async/await, Actors, and structured concurrency in Swift. Use when implementing Swift async/await, Actors, or structured concurrency in iOS/macOS.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: swift-concurrency description: Implement async/await, Actors, and structured concurrency in Swift. Use when implementing Swift async/await, Actors, or structured concurrency in iOS/macOS. metadata: triggers: files: - '**/*.swift' keywords: - async - await - actor - Swift concurrency Task - Swift Task - MainActor

Swift Concurrency

Priority: P0 (CRITICAL)

Write Structured Async Code

  • Async Functions: Mark with async and call with await.
  • async let: Use async let for parallel execution when multiple tasks independent.
  • Task Groups: Use withTaskGroup or withThrowingTaskGroup for spawning dynamic number of tasks.
  • Error Handling: Combine with throws. Always handle CancellationError.

See implementation examples for parallel fetch with async let and Task Groups.

Isolate State with Actors

  • Data Isolation: Use actor for shared mutable state to avoid data races.
  • @MainActor: Annotate UI classes (Views, ViewModels) with @MainActor for main thread execution. Use MainActor.run { ... } for inline UI updates in async blocks.
  • Global Actors: Use @GlobalActor for specific thread-bound resources.
  • nonisolated: Use nonisolated for methods that don't access actor state to avoid unnecessary hops.

See implementation examples for Actor-based state isolation and nonisolated methods.

Manage Task Lifecycle

  • Task Hierarchy: Inherit isolation by using Task { ... }.
  • Cancellation: Explicitly check Task.isCancelled in long loops. Use try Task.checkCancellation() for throwing functions.
  • Detached Tasks: Avoid Task.detached unless you explicitly want to break context inheritance.

Anti-Patterns

  • No synchronous work in @MainActor: not block main thread.
  • No UI updates off @MainActor: Always dispatch back to main via MainActor.
  • No ignored cancellation: Always check and propagate cancellation.

References

저장한 Skills