Recall & Review
beginner
What does it mean that closures are reference types in Swift?
It means that when you assign a closure to a new variable or constant, both refer to the same closure instance in memory. Changes to one affect the other.
Click to reveal answer
beginner
How do closures behave differently from value types like structs in Swift?
Closures are reference types, so they share the same instance when assigned or passed around. Structs are value types, so they get copied each time.
Click to reveal answer
intermediate
What happens if you modify a variable captured by a closure that is a reference type?
The closure keeps a reference to the original variable, so changes inside the closure affect the original variable outside it.
Click to reveal answer
intermediate
Explain with an example why closures being reference types matters in Swift.
If you assign a closure to two variables and call one, both see the same captured variables. For example, incrementing a counter inside one closure affects the other because they share the same reference.
Click to reveal answer
advanced
Can closures cause memory leaks because they are reference types? Why or why not?
Yes, closures can cause memory leaks if they capture self strongly in classes, creating a strong reference cycle. Using [weak self] or [unowned self] in capture lists helps avoid this.
Click to reveal answer
What happens when you assign a closure to a new variable in Swift?
✗ Incorrect
Closures are reference types, so assigning them copies the reference, not the closure itself.
Which of these is a value type in Swift?
✗ Incorrect
Structs are value types; closures and classes are reference types.
Why can closures cause memory leaks in Swift?
✗ Incorrect
Closures can capture self strongly, causing reference cycles and memory leaks.
If two variables hold the same closure reference, what happens if you modify a captured variable inside one closure?
✗ Incorrect
Because closures are reference types, they share captured variables.
How can you avoid strong reference cycles with closures in Swift?
✗ Incorrect
Using weak or unowned references in capture lists prevents strong reference cycles.
Explain why closures are considered reference types in Swift and how this affects variable assignment.
Think about how two variables can point to the same closure.
You got /3 concepts.
Describe a scenario where closures being reference types can lead to a memory leak and how to prevent it.
Consider how closures capture class instances.
You got /3 concepts.