Values & References16 / 16
Up next

weak breaks a cycle

class Person {
    let name: String
    // weak does not keep the referent alive, so no cycle forms
    weak var friend: Person?
    init(_ name: String) { self.name = name }
    deinit { print("bye \(name)") }
}
var a: Person? = Person("A")
var b: Person? = Person("B")
a?.friend = b
b?.friend = a
a = nil
b = nil
print("done")
What you're solving

avoid a retain cycle with weak