Skip to content

Instantly share code, notes, and snippets.

@BrunoCerberus
Created August 2, 2023 04:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BrunoCerberus/98545b3284397ddd20e7d743db9f9071 to your computer and use it in GitHub Desktop.
Save BrunoCerberus/98545b3284397ddd20e7d743db9f9071 to your computer and use it in GitHub Desktop.
Retain Cycle
class Person {
let name: String
var pet: Pet?
init(name: String) {
self.name = name
print("\(name) is being initialized.")
}
deinit {
print("\(name) is being deinitialized.")
}
}
class Pet {
let name: String
var owner: Person?
init(name: String) {
self.name = name
print("\(name) is being initialized.")
}
deinit {
print("\(name) is being deinitialized.")
}
}
// Creating a retain cycle
var john: Person? = Person(name: "John")
var cat: Pet? = Pet(name: "Whiskers")
// Assigning references to create a retain cycle
john?.pet = cat
cat?.owner = john
// Setting the references to nil to break the retain cycle
john = nil
cat = nil
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment