Sobes.tech
Junior — Middle

Como fazer uma referência fraca numa linguagem de programação?

sobes.tech IA

Resposta da IA

No iOS (Swift), para criar uma referência fraca, usa-se a palavra-chave weak. Uma referência fraca não aumenta o contador de referências do objeto, o que ajuda a evitar ciclos de retenção e fugas de memória.

Exemplo:

class Person {
    var name: String
    weak var apartment: Apartment? // referência fraca

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

class Apartment {
    let unit: String
    var tenant: Person? // referência forte

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

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

Neste exemplo, Person contém uma referência fraca a Apartment para evitar um ciclo de retenção entre Person e Apartment. Se ambas as referências fossem fortes, os objetos não seriam liberados da memória.

Importante: referências fracas devem ser opcionais (?), pois o objeto ao qual se referem pode ser removido.