Sobes.tech
Junior — Middle

În ce situații se folosește o referință slabă către un obiect?

sobes.tech AI

Răspuns de la AI

O referință slabă (weak reference) în iOS este utilizată pentru a preveni ciclurile de referințe puternice (retain cycles), care pot duce la scurgeri de memorie. Nu crește contorul de referințe al obiectului, astfel încât obiectul poate fi eliberat chiar dacă există referințe slabe către el.

Situații tipice de utilizare a referințelor slabe:

  • Delegați: adesea declarați ca weak pentru a evita un ciclu între obiect și delegatul său.
  • Closure-uri: dacă un closure capturează self, pentru a evita un ciclu, self este capturat cu [weak self].
  • Conexiuni între obiecte, unde un obiect deține altul, iar celălalt trebuie să aibă o referință fără a deține.

Exemplu cu delegat:

protocol SomeDelegate: AnyObject {
    func didUpdate()
}

class SomeClass {
    weak var delegate: SomeDelegate?
}

Astfel, referința slabă ajută la gestionarea memoriei și prevenirea scurgerilor.