An unowned reference is a non-strong (or weak) reference to an instance. This means that the reference to the instance is not taken into account by ARC. An unowned reference is always expected to contain a value and should never be nil.
We begin by creating two more classes, MyClass1_Unowned and MyClass2_Unowned:
class MyClass1_Unowned {
var name = ""
unowned let class2: MyClass2_Unowned
init(name: String, class2: MyClass2_Unowned) {
self.name = name
self.class2 = class2
print("Initializing class1_Unowned with name \(self.name)")
}
deinit {
print("Releasing class1_Unowned with name \(self.name)")
}
}
class MyClass2_Unowned {
var name = ""
var class1: MyClass1_Unowned?
init(name: String) {
self.name = name
print("Initializing class2_Unowned with name \...