Junior — Middle
Čime se razlikuju tipovi referenci Strong i Weak u upravljanju memorijom i modelu referenci?
sobes.tech АИ
Одговор од АИ
Strong-vezava — to je običajna snažna veza na objekat, koja povećava brojač referenci (retain count) tog objekta. Dok postoji bar jedna snažna veza, objekat neće biti uklonjen iz memorije.
Weak-vezava — to je slaba veza, koja ne povećava brojač referenci objekta. Koristi se za sprečavanje cikličkih referenci (retain cycles). Ako je objekat na koji ukazuje weak-vezava uklonjen, weak-vezava automatski postaje nil.
Primer u Swift:
class Person {
var name: String
init(name: String) { self.name = name }
var apartment: Apartment?
}
class Apartment {
let unit: String
weak var tenant: Person? // slaba veza za izbegavanje ciklusa
init(unit: String) { self.unit = unit }
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john // weak-vezava
Ovde, weak-vezava tenant ne drži objekat Person, što omogućava izbegavanje curenja memorije.