Skip to content

Instantly share code, notes, and snippets.

@vialyx
Created April 24, 2018 09:54
Show Gist options
  • Save vialyx/b7585ee63f68647af043d1c79162e274 to your computer and use it in GitHub Desktop.
Save vialyx/b7585ee63f68647af043d1c79162e274 to your computer and use it in GitHub Desktop.
// MARK: - unowned reference. Prevent strong reference cycle
class Owner {
let udid: String
let iin: String
let name: String
var business: Business!
init(udid: String, iin: String, name: String) {
self.udid = udid
self.iin = iin
self.name = name
}
deinit {
print("owner was deitialized")
}
}
class Business {
let title: String
unowned var owner: Owner
init(title: String, owner: Owner) {
self.title = title
self.owner = owner
}
deinit {
print("business was deitialized")
}
}
var owner: Owner? = Owner(udid: "1st owner", iin: "1", name: "Mike")
owner!.business = Business(title: "1st Corp", owner: owner!)
/*
Do some work with owner
*/
owner = nil
/*
print: owner was deitialized
print: business was deitialized
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment