Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Goodbye GCD: Embracing async/await in Your SwiftUI Journey
Rating: 5.0 out of 5(2 ratings)
676 students

Goodbye GCD: Embracing async/await in Your SwiftUI Journey

A practical guide to async/await in Swift using DispatchQueue as your bridge from UIKit to structured concurrency
Created byNorbert Grover
Last updated 8/2025
English

What you'll learn

  • Understand the fundamentals of concurrency and asynchronous programming in Swift.
  • Compare and contrast DispatchQueue and async/await for managing asynchronous tasks.
  • Safely handle shared mutable state using actors to prevent race conditions.
  • Refactor legacy code using structured concurrency for better readability and safety.
  • Apply @MainActor and task isolation to safely manage UI updates in SwiftUI.
  • Identify and resolve callback hell by converting closures into async/await patterns.
  • Trace thread context and execution flow between background and main threads.
  • Build concurrency-safe services and view models using both GCD and structured concurrency.

Course content

1 section6 lectures45m total length
  • Introduction5:10

    This is the introduction to explaining asynchronous/await

  • Why Learning async/await Is Challenging for Beginners1:38

    This lecture explores the core reasons why async/await, despite its clean syntax and modern design, can be difficult for beginners to grasp—especially those new to concurrency and threading. We unpack how its seemingly synchronous structure hides complex asynchronous behavior, and how the suspension and resumption model requires a shift in thinking.

    The session contrasts async/await with DispatchQueue, highlighting how the latter’s explicit thread management provides a clearer mental model for understanding execution flow. By examining how thread context is handled differently, and how structured concurrency abstracts many of the manual responsibilities, students will gain a deeper appreciation for the power and pitfalls of async/await.

    Ideal for developers transitioning from UIKit to SwiftUI, this lecture sets the foundation for confidently adopting Swift’s structured concurrency model.

  • Aspects of Manual Control3:24

    This lecture explores the core aspects of manual control in asynchronous programming, with a focus on how developers explicitly manage execution flow using tools like DispatchQueue. Topics include thread selection, queue prioritization, manual switching between background and main threads, and safeguarding UI updates. By examining these responsibilities in depth, students will gain an appreciation for both the flexibility and complexity of manual concurrency models—setting the stage for understanding how structured concurrency (via async/await) simplifies these same concerns.

  • Contrasting DispatchQueue with Async Await33:42

    In this video, we demystify Swift's async/await by directly comparing it to the more familiar DispatchQueue approach. Aimed at developers transitioning from UIKit to SwiftUI, the video walks through how both methods handle asynchronous tasks, thread context, and UI updates.

    By examining common concurrency patterns side-by-side—like network calls, background processing, and main thread updates—you'll see how DispatchQueue requires manual thread management, while async/await offers a cleaner, more structured alternative. The video highlights key concepts such as thread switching, callback hell, and race conditions, and shows how Swift's modern concurrency model solves these challenges with simpler, more readable code.

    Ideal for anyone looking to move from imperative to declarative Swift, this session builds your mental model of structured concurrency by grounding it in tools you already understand.


    FYI, there is a resources attachment with a link to the GitHub repo.

  • Practical Application of actor in Swift1:09

    This lecture focuses on the real-world use of Swift's actor keyword as a solution to managing shared mutable state safely in concurrent environments. Through concrete examples, such as building a thread-safe in-memory cache and a shared counter, students will learn how actors isolate data, serialize access, and eliminate race conditions without relying on locks or manual thread management.

    The session compares traditional approaches using DispatchQueue with the actor-based model, highlighting the benefits of structured concurrency in terms of readability, maintainability, and safety. By the end of the lecture, learners will understand when and how to use actors effectively, and how they fit into the broader Swift Concurrency model.

  • A Side by Side Comparison Between DispatchQueue and Actor0:45

    This lecture presents a clear, practical comparison between two common approaches to managing concurrency in Swift: DispatchQueue and actor. Through side-by-side examples, learners will see how each method handles thread safety, data access, and synchronization. The session examines a shared use case—a thread-safe counter—implemented using both techniques to highlight the differences in complexity, readability, and error risk.

    By analyzing how DispatchQueue requires manual thread management and potential for race conditions, versus how actor simplifies and enforces safe access through structured concurrency, students will gain a deeper understanding of Swift’s evolving concurrency model. This lecture is ideal for developers familiar with Grand Central Dispatch who want to transition to Swift’s modern concurrency tools with confidence.

Requirements

  • Familiarity with Swift syntax and basic data types
  • Experience working with classes, structs, and functions in Swift
  • Basic understanding of UIKit or SwiftUI view structure
  • Ability to read and write asynchronous code using completion handlers
  • General knowledge of Xcode and running iOS projects
  • Prior experience using DispatchQueue for background tasks
  • Understanding of optionals, error handling, and closures in Swift
  • Comfort working with model-view-viewmodel (MVVM) architecture
  • Ability to follow code samples and debug with breakpoints
  • Working knowledge of JSON decoding using Codable

Description

Are you a Swift developer still reaching for DispatchQueue every time you need to go async? Do terms like @MainActor, Task, and actor feel abstract or disconnected from the kind of code you actually write every day?

This course is your bridge.

"Goodbye GCD" is a clear, practical, and no-fluff introduction to modern Swift concurrency — built specifically for developers like you who know how to use DispatchQueue but want to understand and fully adopt async/await.

We don’t assume you’re starting from scratch, nor do we bury you in theory. Instead, this course meets you where you are: inside real-world mobile code. We use DispatchQueue as a familiar reference point to explain how structured concurrency works, why it exists, and how you can use it to write cleaner, safer, and more maintainable Swift.

You’ll see exactly how async/await improves upon traditional approaches, how to think in terms of thread context and task suspension, and how features like @MainActor and actor solve problems you’ve likely encountered but had to hack around.

By the end of the course, you won’t just know how to use Swift concurrency — you’ll understand how it thinks.

Whether you’re transitioning from UIKit to SwiftUI, refactoring legacy code, or preparing for your next big iOS role, this course will equip you with the concurrency foundation modern apps demand — without wasting your time.

If you’re ready to move beyond callback hell and take control of concurrency in Swift the right way, this course is for you.

Who this course is for:

  • UIKit developers transitioning to SwiftUI and structured concurrency
  • iOS engineers looking to modernize legacy GCD-based code
  • Developers who struggle with managing async tasks and thread safety
  • Swift developers curious about the actor model and structured concurrency
  • Intermediate Swift learners ready to go beyond basics
  • Mobile developers seeking better ways to handle background work
  • Programmers looking to write cleaner, more maintainable async code
  • SwiftUI users who want to safely update UI in concurrent environments
  • Engineers preparing for iOS interviews with concurrency topics
  • Teams modernizing their app architecture to use Swift's async/await model