class Person {
let name:String
init(name:String) {
self.name = name
}
var apartment:Apartment?
deinit {
print("\(name) is being deininialized")
}
}
class Apartment {
let number:Int
init(number:Int) {
self.number = number
}
var tenant:Person?
deinit {
print("Apartment #\(number) is being deininialized")
}
}
// 這是強引用,不要認為可選類型就是弱引用啊,隻有通過weak unowned才是弱引用
var john:Person?
var number73:Apartment?
john = Person.init(name:"Johu Appleseed")
number73 = Apartment.init(number:73)

john!.apartment = number73
number73!.tenant = john
john = nil
number73 = nil
class Apartment1 {
let number:Int
init(number:Int) {
self.number = number
}
weakvar tenant: Person?
deinit {
print("Apartment #\(number) is being deininialized")
}
}
print("--------------------->>")
var john1:Person?
var number74:Apartment1?
john1 = Person.init(name:"Johu Appleseed1")
number74 = Apartment1.init(number:74)
john1!.apartment = number73
number74!.tenant = john
john1 = nil
number74 = nil