Junior — Middle
U kojim situacijama korišćenje brojača referenci za upravljanje memorijom možda neće povećati brojač za objekat?
sobes.tech АИ
Одговор од АИ
Korišćenje brojača referenci (reference counting) ne dovodi do povećanja brojača u sledećim situacijama:
- Slabe reference (weak references): one ne povećavaju brojač kako bi izbegle cikličke zavisnosti. Na primer, u iOS sa ARC, slabe reference se deklaršu pomoću
weak. - Neposedničke reference (unowned references): slične su slabim, ali pretpostavljaju da objekat uvek postoji i takođe ne povećavaju brojač.
- Unutrašnje optimizacije kompajlera ili runtime-a: ponekad, reference mogu biti optimizovane tako da se brojač ne menja.
Primer slabe reference u Swift:
class Person {
var name: String
weak var apartment: Apartment? // ne povećava brojač
init(name: String) {
self.name = name
}
}
class Apartment {
var unit: String
init(unit: String) {
self.unit = unit
}
}
Ovde je apartment slaba referenca koja ne povećava brojač objekta Apartment.