ARC (Automatic Reference Counting)

https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html

  1. class Person {
  2. let name: String
  3. init(name: String) { self.name = name }
  4. var apartment: Apartment?
  5. deinit { print("\(name) is being deinitialized") }
  6. }
  7. class Apartment {
  8. let unit: String
  9. init(unit: String) { self.unit = unit }
  10. var tenant: Person?
  11. deinit { print("Apartment \(unit) is being deinitialized") }
  12. }



../_images/referenceCycle02_2x.png



Weak References

    Property observers aren’t called when ARC sets a weak reference to. nil.

  1. class Person {
  2. let name: String
  3. init(name: String) { self.name = name }
  4. var apartment: Apartment?
  5. deinit { print("\(name) is being deinitialized") }
  6. }
  7. class Apartment {
  8. let unit: String
  9. init(unit: String) { self.unit = unit }
  10. weak var tenant: Person?
  11. deinit { print("Apartment \(unit) is being deinitialized") }
  12. }


../_images/weakReference01_2x.png


Unowned References

Use an unowned reference only when you are sure that the reference always refers to an instance that has not been deallocated.
If you try to access the value of an unowned reference after that instance has been deallocated, you’ll get a runtime error.












댓글

이 블로그의 인기 게시물

shuffled

지금 이 순간