Sobes.tech
Junior — Middle

Kaip galima padaryti silpną nuorodą programavimo kalboje?

sobes.tech AI

Atsakymas iš AI

iOS (Swift) aplinkoje silpnos nuorodos sukūrimui naudojama raktinė žodis weak. Silpna nuoroda nepadidina objekto nuorodų skaitiklio, kas padeda išvengti išlaikymo ciklų ir atminties nutekėjimo.

Pavyzdys:

class Person {
    var name: String
    weak var apartment: Apartment? // silpna nuoroda

    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    var tenant: Person? // stipri nuoroda

    init(unit: String) {
        self.unit = unit
    }
}

// Naudojimas:
let john = Person(name: "John")
let unit4A = Apartment(unit: "4A")
john.apartment = unit4A
unit4A.tenant = john

Šiame pavyzdyje, Person turi silpną nuorodą į Apartment, siekiant išvengti išlaikymo ciklo tarp Person ir Apartment. Jei abi nuorodos būtų stiprios, objektai nebūtų atlaisvinti iš atminties.

Svarbu: silpnos nuorodos turi būti pasirinktinės (?), nes objektas, į kurį jos nukreiptos, gali būti ištrintas.