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.