Bird
Raised Fist0
Swiftprogramming~5 mins

Defer statement for cleanup in Swift - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the defer statement in Swift?
The defer statement schedules code to run just before the current scope exits, ensuring cleanup code runs no matter how the scope is exited.
Click to reveal answer
beginner
When exactly does the code inside a defer block execute?
The code inside a defer block executes right before the function or scope returns or exits, even if an error is thrown or a return happens earlier.
Click to reveal answer
intermediate
Can multiple defer statements be used in the same scope? If yes, in what order do they execute?
Yes, multiple defer statements can be used. They execute in reverse order of appearance (last-in, first-out).
Click to reveal answer
beginner
Why is defer useful for resource management?
defer ensures resources like files or network connections are properly closed or released, even if the function exits early or throws an error.
Click to reveal answer
beginner
Example: What will this Swift code print?
func test() {
  defer { print("Cleanup") }
  print("Start")
  return
  print("End")
}
test()
It will print:
Start
Cleanup
The defer block runs after print("Start") and before the function returns. The print("End") is never reached.
Click to reveal answer
What happens if a function with a defer block throws an error?
AThe function ignores the error.
BThe <code>defer</code> block is skipped.
CThe <code>defer</code> block still runs before the error propagates.
DThe program crashes immediately.
If you have two defer blocks in a function, which one runs first?
AOnly the last one runs.
BThe first one written in the code.
CThey run simultaneously.
DThe second one written in the code.
Which of these is a good use case for defer?
ADeclaring a variable.
BOpening a file and ensuring it closes after use.
CStarting a loop.
DPrinting a message at the start of a function.
What will this code print?
func example() {
  defer { print("First") }
  defer { print("Second") }
  print("Hello")
}
example()
AHello\nSecond\nFirst
BFirst\nSecond\nHello
CSecond\nHello\nFirst
DHello\nFirst\nSecond
Can defer be used outside of functions, like in global scope?
ANo, only inside functions or methods.
BYes, anywhere in code.
COnly inside loops.
DOnly inside classes.
Explain how the defer statement helps with cleanup in Swift functions.
Think about what happens when a function ends early or throws an error.
You got /4 concepts.
    Describe the order of execution when multiple defer statements are used in the same function.
    Imagine stacking plates and removing them one by one.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the defer statement do in Swift?
      easy
      A. Skips the rest of the function
      B. Runs code just before the function returns
      C. Runs code immediately when the function starts
      D. Runs code only if an error occurs

      Solution

      1. Step 1: Understand the purpose of defer

        The defer statement schedules code to run at the end of the current function, just before it returns.
      2. Step 2: Compare options with this behavior

        Only Runs code just before the function returns matches this behavior exactly; others describe different timings or conditions.
      3. Final Answer:

        Runs code just before the function returns -> Option B
      4. Quick Check:

        defer runs code before function ends = C [OK]
      Hint: Remember: defer runs code at function exit, not start [OK]
      Common Mistakes:
      • Thinking defer runs immediately
      • Confusing defer with error handling
      • Assuming defer skips code
      2. Which of the following is the correct syntax to use a defer statement in Swift?
      easy
      A. defer -> { print("Cleanup") }
      B. defer: print("Cleanup")
      C. defer() print("Cleanup")
      D. defer { print("Cleanup") }

      Solution

      1. Step 1: Recall correct defer syntax

        The defer statement uses the keyword followed by a block in curly braces: defer { ... }.
      2. Step 2: Check each option

        Only defer { print("Cleanup") } matches the correct syntax. Others use invalid punctuation or structure.
      3. Final Answer:

        defer { print("Cleanup") } -> Option D
      4. Quick Check:

        defer uses braces {} for code block = D [OK]
      Hint: defer always uses braces { } for its code block [OK]
      Common Mistakes:
      • Using parentheses instead of braces
      • Adding colons after defer
      • Using arrow symbols incorrectly
      3. What will be the output of this Swift code?
      func test() {
          defer { print("First") }
          defer { print("Second") }
          print("Inside")
      }
      test()
      medium
      A. Inside First Second
      B. First Second Inside
      C. Inside Second First
      D. Second First Inside

      Solution

      1. Step 1: Understand defer execution order

        Multiple defer statements run in reverse order of appearance when the function ends.
      2. Step 2: Trace the output

        "Inside" prints first. Then the last defer prints "Second", then the first defer prints "First".
      3. Final Answer:

        Inside Second First -> Option C
      4. Quick Check:

        defer runs last-in-first-out = A [OK]
      Hint: Multiple defers run in reverse order at function end [OK]
      Common Mistakes:
      • Assuming defers run in order added
      • Thinking defer runs immediately
      • Mixing print order
      4. Identify the error in this Swift function using defer:
      func cleanup() {
          defer print("Done")
          print("Working")
      }
      medium
      A. Missing braces {} after defer
      B. Cannot use print inside defer
      C. defer must be last statement
      D. No error, code is correct

      Solution

      1. Step 1: Check defer syntax

        The defer statement requires a code block enclosed in braces {}.
      2. Step 2: Analyze the given code

        The code uses defer print("Done") without braces, which is invalid syntax.
      3. Final Answer:

        Missing braces {} after defer -> Option A
      4. Quick Check:

        defer needs braces {} for code block = B [OK]
      Hint: Always use braces {} after defer keyword [OK]
      Common Mistakes:
      • Omitting braces for defer block
      • Thinking defer can take single statement without braces
      • Assuming defer must be last line
      5. You want to open a file, write data, and ensure the file is always closed even if an error occurs. Which is the best way to use defer for cleanup in Swift?
      hard
      A. Open file, write data, then use defer { close file } immediately after opening
      B. Write data, then open file, then defer { close file }
      C. Use defer { close file } only if no error occurs
      D. Close file manually without defer after writing

      Solution

      1. Step 1: Understand defer for cleanup

        defer ensures cleanup code runs at function end, even if errors happen.
      2. Step 2: Apply defer after resource acquisition

        Place defer { close file } immediately after opening the file to guarantee closure.
      3. Final Answer:

        Open file, write data, then use defer { close file } immediately after opening -> Option A
      4. Quick Check:

        defer after open ensures cleanup always runs = A [OK]
      Hint: Place defer right after resource acquisition for safe cleanup [OK]
      Common Mistakes:
      • Placing defer after writing data
      • Skipping defer on errors
      • Closing file manually risking leaks
      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