Junior — Middle
Come si può fare un riferimento debole in un linguaggio di programmazione?
sobes.tech AI
Risposta dell'AI
In iOS (Swift), per creare un riferimento debole si utilizza la parola chiave weak. Un riferimento debole non aumenta il contatore di riferimenti dell'oggetto, aiutando a evitare cicli di ritenzione e perdite di memoria.
Esempio:
class Person {
var name: String
weak var apartment: Apartment? // riferimento debole
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
var tenant: Person? // riferimento forte
init(unit: String) {
self.unit = unit
}
}
// Uso:
let john = Person(name: "John")
let unit4A = Apartment(unit: "4A")
john.apartment = unit4A
unit4A.tenant = john
In questo esempio, Person contiene un riferimento debole a Apartment per evitare un ciclo di ritenzione tra Person e Apartment. Se entrambi i riferimenti fossero forti, gli oggetti non verrebbero liberati dalla memoria.
Importante: i riferimenti deboli devono essere opzionali (?), poiché l'oggetto a cui fanno riferimento può essere eliminato.