Bird
Raised Fist0
Swiftprogramming~5 mins

Task for launching concurrent work in Swift - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Task in Swift concurrency?
A Task represents a unit of asynchronous work that runs concurrently. It allows you to start work that can run independently from the current code flow.
Click to reveal answer
beginner
How do you create a new concurrent task in Swift?
You create a new task by calling Task { ... } and placing asynchronous code inside the closure. This runs the code concurrently.
Click to reveal answer
intermediate
What is the difference between Task and async/await?
async/await lets you write asynchronous code that waits for results, while Task launches work concurrently without blocking the current thread.
Click to reveal answer
intermediate
How can you cancel a running Task?
You can call task.cancel() on the Task instance. Inside the task, you should check for cancellation using Task.isCancelled to stop work cooperatively.
Click to reveal answer
beginner
What happens if you call Task { ... } inside a synchronous function?
The task starts running concurrently in the background immediately, allowing the synchronous function to continue without waiting for the task to finish.
Click to reveal answer
Which Swift code launches a new concurrent task?
ATask { await fetchData() }
BfetchData()
Casync fetchData()
DDispatchQueue.main.async { fetchData() }
How do you check if a task has been cancelled inside its code?
Aif task.isCancelled { ... }
Bif Task.isCancelled { ... }
Cif cancelled { ... }
Dif Task.cancelled { ... }
What does Task { ... } return?
AAn async function
BVoid
CA DispatchQueue
DA Task instance representing the concurrent work
Which statement is true about Task in Swift concurrency?
AIt runs code concurrently without blocking the current thread
BIt blocks the current thread until the task finishes
CIt only runs on the main thread
DIt is used to create synchronous functions
How can you cancel a running Task?
ASet a flag variable to false
BCall <code>stop()</code> on the Task instance
CCall <code>cancel()</code> on the Task instance
DYou cannot cancel a Task once started
Explain how to launch concurrent work using Task in Swift and how cancellation works.
Think about starting work that runs alongside your current code and how you can stop it if needed.
You got /4 concepts.
    Describe the difference between using async/await and launching a Task in Swift concurrency.
    Consider when you want to wait for a result versus when you want to start work and continue immediately.
    You got /4 concepts.

      Practice

      (1/5)
      1.

      What does Task { } do in Swift concurrency?

      easy
      A. Creates a synchronous function
      B. Starts a new piece of work that runs concurrently with other code
      C. Blocks the main thread until the work finishes
      D. Stops all other tasks from running

      Solution

      1. Step 1: Understand the purpose of Task

        Task { } is used to start work that runs at the same time as other code, without blocking.
      2. Step 2: Compare options

        Only Starts a new piece of work that runs concurrently with other code correctly describes this concurrent behavior. Options A, B, and D are incorrect because they describe blocking, synchronous, or stopping behavior, which Task does not do.
      3. Final Answer:

        Starts a new piece of work that runs concurrently with other code -> Option B
      4. Quick Check:

        Task starts concurrent work = C [OK]
      Hint: Task runs code concurrently without blocking [OK]
      Common Mistakes:
      • Thinking Task blocks the main thread
      • Confusing Task with synchronous functions
      • Believing Task stops other tasks
      2.

      Which of the following is the correct syntax to start a new concurrent task in Swift?

      ?
      easy
      A. task { fetchData() }
      B. async Task { fetchData() }
      C. Task.start { fetchData() }
      D. Task { await fetchData() }

      Solution

      1. Step 1: Recall correct Task syntax

        The correct way to start a concurrent task is Task { } with a closure inside. Using await is needed if calling async functions.
      2. Step 2: Check each option

        Task { await fetchData() } uses correct capitalization and syntax. Options A, C, and D use incorrect keywords or syntax.
      3. Final Answer:

        Task { await fetchData() } -> Option D
      4. Quick Check:

        Correct Task syntax = B [OK]
      Hint: Task must be capitalized and use braces { } [OK]
      Common Mistakes:
      • Using lowercase 'task' instead of 'Task'
      • Adding 'start' method which doesn't exist
      • Adding 'async' keyword before Task incorrectly
      3.

      What will be printed by this Swift code?

      Task {
          print("Start")
          await Task.sleep(1_000_000_000) // 1 second
          print("End")
      }
      print("Outside")
      medium
      A. Start\nOutside\nEnd
      B. Outside\nStart\nEnd
      C. Outside\nEnd\nStart
      D. Start\nEnd\nOutside

      Solution

      1. Step 1: Understand Task concurrency

        The Task { } runs concurrently, so "Start" prints immediately when the task begins.
      2. Step 2: Trace print order

        Within the Task, "Start" prints first, then the task sleeps for 1 second, then prints "End". Meanwhile, the main thread continues and prints "Outside" immediately after starting the Task.
      3. Step 3: Determine exact order

        Because the Task closure starts immediately and prints "Start" before sleeping, "Start" prints before "Outside". Then "Outside" prints, and after 1 second delay, "End" prints.
      4. Final Answer:

        Start\nOutside\nEnd -> Option A
      5. Quick Check:

        Task prints Start immediately, main prints Outside, then Task prints End = D [OK]
      Hint: Task closure starts immediately and prints Start before main thread prints Outside [OK]
      Common Mistakes:
      • Assuming 'Outside' prints before 'Start'
      • Ignoring that Task closure starts immediately
      • Thinking Task blocks main thread
      4.

      Identify the error in this Swift code that tries to launch a concurrent task:

      Task {
          let result = fetchData()
          print(result)
      }

      Assuming fetchData() is an async function.

      medium
      A. Missing await before fetchData()
      B. Task cannot be used with async functions
      C. print cannot be called inside Task
      D. fetchData() must be synchronous

      Solution

      1. Step 1: Check async function call

        Since fetchData() is async, it must be called with await inside an async context like Task.
      2. Step 2: Identify missing await

        The code misses await before fetchData(), causing a compile error.
      3. Final Answer:

        Missing await before fetchData() -> Option A
      4. Quick Check:

        Async calls need await = A [OK]
      Hint: Async calls inside Task need await keyword [OK]
      Common Mistakes:
      • Forgetting await on async calls
      • Thinking Task disallows async calls
      • Believing print can't be used inside Task
      5.

      You want to fetch user data and update the UI without blocking the main thread. Which is the best way to launch this concurrent work?

      func updateUI(with data: String) {
          print("UI updated with \(data)")
      }
      
      func fetchUserData() async -> String {
          // Simulate network delay
          await Task.sleep(2_000_000_000)
          return "User123"
      }
      
      // What code should you write here?
      hard
      A. Task { let data = fetchUserData() updateUI(with: data) }
      B. let data = fetchUserData() updateUI(with: data)
      C. Task { let data = await fetchUserData() updateUI(with: data) }
      D. updateUI(with: fetchUserData())

      Solution

      1. Step 1: Understand async fetch and UI update

        Fetching user data is async and takes time. To avoid blocking, use Task { } to run it concurrently.
      2. Step 2: Use await and update UI inside Task

        Inside the Task, await the async fetch, then update the UI with the result. This keeps UI responsive.
      3. Final Answer:

        Task { let data = await fetchUserData() updateUI(with: data) } -> Option C
      4. Quick Check:

        Await async fetch inside Task, then update UI = A [OK]
      Hint: Await async calls inside Task before UI update [OK]
      Common Mistakes:
      • Calling async function without await
      • Updating UI outside Task causing blocking
      • Not using Task for concurrency
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard