Sobes.tech
Junior — Middle

Em que situações deve-se usar a palavra-chave `unowned` em Swift?

sobes.tech IA

Resposta da IA

A palavra-chave unowned em Swift é usada para declarar uma referência fraca que não é opcional e não aumenta o contador de referências do objeto.

É usada em situações onde existe um ciclo de referência entre objetos, mas garante-se que o objeto ao qual se refere existirá por mais tempo do que a referência unowned.

Por exemplo, em relações de "pai — filho", onde o filho mantém uma referência unowned ao pai para evitar um ciclo:

class Parent {
    var child: Child?
}

class Child {
    unowned let parent: Parent
    init(parent: Parent) {
        self.parent = parent
    }
}

let dad = Parent()
let kid = Child(parent: dad)
dad.child = kid

Se o objeto ao qual se refere com unowned for removido, tentar acessá-lo causará um erro em tempo de execução. Portanto, unowned é adequado quando o ciclo de vida do objeto é garantido que será mais longo do que a referência a ele.