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.