retainCyclePlayground
import Foundation
// Two object retain cycle pattern
class Person: NSObject {
var name: String
var departure: Departure?
init(name:String) {
self.name = name
}
deinit {
print("person deinit")
}
}
class Departure: NSObject {
var resident: Person?
// resolution
// weak var resident: Person?
var address: String
init(address: String) {
self.address = address
}
deinit {
print("Departure deinit")
}
}
var terry: Person? = Person(name: "Terry")
var kyotoTown: Departure? = Departure(address: "kyoto road")
terry?.departure = kyotoTown
kyotoTown?.resident = terry
terry = nil
kyotoTown = nil
// class Person & KyotoTown can't deinit. retain cycle occurred