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