Sobes.tech
Junior — Middle

Care este diferența dintre tipurile de referințe Strong și Weak în gestionarea memoriei și modelul de referință?

sobes.tech AI

Răspuns de la AI

Legătura puternică — este o referință obișnuită puternică către un obiect, care crește contorul de referințe (numărul de retenție) al acestui obiect. Atâta timp cât există cel puțin o referință puternică, obiectul nu va fi eliminat din memorie.

Legătura slabă — este o referință slabă, care nu crește contorul de referințe al obiectului. Este utilizată pentru a preveni ciclurile de retenție. Dacă obiectul la care face referire legătura slabă este eliminat, legătura slabă devine automat nil.

Exemplu în Swift:

class Person {
    var name: String
    init(name: String) { self.name = name }
    var apartment: Apartment?
}

class Apartment {
    let unit: String
    weak var tenant: Person?  // referință slabă pentru a evita ciclurile
    init(unit: String) { self.unit = unit }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john  // referință slabă

Aici, referința slabă tenant nu menține obiectul Person, ceea ce previne scurgerile de memorie.