A weak reference is similar to an unowned reference, where a non-strong (or weak) reference is referencing an instance of a type. The main difference is a weak reference can contain nil. If the instance is deallocated while there is a weak reference referencing it, then the weak reference is set to nil.
Once again, we begin by creating two new classes:
class MyClass1_Weak {
var name = ""
var class2: MyClass2_Weak?
init(name: String) {
self.name = name
print("Initializing class1_Weak with name \(self.name)")
}
deinit {
print("Releasing class1_Weak with name \(self.name)")
}
}
class MyClass2_Weak {
var name = ""
weak var class1: MyClass1_Weak?
init(name: String) {
self.name = name
print("Initializing class2_Weak with name \(self.name)")
}
deinit...