Sobes.tech
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.