Sobes.tech
Junior — Middle

Já utilizou variáveis de referência do tipo Unowned nos seus projetos?

sobes.tech IA

Resposta da IA

Sim, em projetos de iOS utilizei variáveis de referência do tipo unowned.

unowned é um tipo de referência fraca que não aumenta o contador de referências, mas assume que o objeto ao qual se refere sempre existirá durante o uso dessa referência.

Isso é útil para evitar ciclos de referências fortes, por exemplo, em closures ou em referências mútuas entre objetos, quando um objeto garante que viverá mais do que outro.

Exemplo de uso de unowned em uma closure:

class Person {
    let name: String
    var apartment: Apartment?
    
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    unowned let tenant: Person
    
    init(unit: String, tenant: Person) {
        self.unit = unit
        self.tenant = tenant
    }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A", tenant: john)
john.apartment = apt

Aqui, tenant é declarado como unowned, pois o apartamento não deve existir sem o inquilino, prevenindo um ciclo de referência forte.