Sobes.tech
Junior

Na čo sa v jazyku Swift používajú slabé odkazy?

sobes.tech AI

Odpoveď od AI

Slabé referencie (weak references) v Swift sa používajú na prevenciu cyklov silných referencií (strong reference cycles), ktoré môžu viesť k únikom pamäti. V systéme automatického počítania referencií (ARC) sú objekty udržiavané v pamäti, pokiaľ majú silné referencie. Ak si dva objekty navzájom odkazujú silnými referenciami, nikdy nebudú uvoľnené.

Slabá referencia nezvyšuje čítač referencií objektu, takže ak nie sú žiadne silné referencie, objekt bude uvoľnený a slabá referencia sa automaticky nastaví na nil. Toto je obzvlášť užitočné pri práci s delegátmi, uzávermi a prepojenými objektmi.

Príklad použitia slabého odkazu:

class Person {
    var name: String
    weak var apartment: Apartment? // slabý odkaz
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    var tenant: Person? // silný odkaz
    init(unit: String) {
        self.unit = unit
    }
}

var john: Person? = Person(name: "John")
var unit4A: Apartment? = Apartment(unit: "4A")

john?.apartment = unit4A
unit4A?.tenant = john

john = nil // objekt Person bude uvoľnený, pretože apartment je slabý odkaz
unit4A = nil

Takto slabé odkazy pomáhajú vyhnúť sa únikom pamäti tým, že prerušujú cykly silných odkazov.