Junior — Middle
Zašto se u programiranju koriste slabe i jake reference i po čemu se razlikuju?
sobes.tech АИ
Одговор од АИ
U programiranju, posebno u upravljanju memorijom, koriste se jake (strong) i slabe (weak) reference za kontrolu životnog ciklusa objekata i sprečavanje curenja memorije.
- Jake reference drže objekat u memoriji dok postoji bar jedna jaka referenca. Sakupljač smeća neće ga ukloniti.
- Slabe reference ne sprečavaju uklanjanje objekta. Ako ostanu samo slabe reference, objekat može biti oslobođen iz memorije.
Ovo je važno za sprečavanje cikličnih referenci, kada dva objekta međusobno referenciraju jake reference, a sakupljač smeća ih ne može ukloniti. U takvim slučajevima, jedna od referenci se postavlja kao slaba.
Primer u Swift:
class Person {
var name: String
weak var apartment: Apartment? // slaba referenca
init(name: String) {
self.name = name
}
}
class Apartment {
var unit: String
var tenant: Person? // jaka referenca
init(unit: String) {
self.unit = unit
}
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john
Ovde, apartment je slaba referenca da bi se izbegao ciklični ciklus zadržavanja između Person i Apartment.