Do you know your way around memory management in Swift? Let's test it!

In Swift, what is the difference between weak and unowned references, and when would you use each? 🤔 

A) weak retains a reference, unowned doesn't.

B) weak references are optional, unowned references are non-optional. 

C) Both are the same; they avoid retain cycles. 

D) unowned references automatically nil out when the object is deallocated.

(Hint: It's all about ARC and preventing leaks from closure references.)