Sobes.tech
Middle — Middle+

Pode-se considerar uma referência fraca como opcional ou ela se comporta de forma diferente?

sobes.tech IA

Resposta da IA

Uma referência fraca em Swift é uma referência que não aumenta o contador de referências do objeto ao qual aponta. Ela é sempre declarada como opcional, porque o objeto ao qual ela se refere pode ser removido da memória, e então a referência fraca se torna automaticamente nil.

Ou seja, a referência fraca comporta-se como um opcional: pode conter um valor ou nil. Isso é importante para evitar o acesso a um objeto que já foi liberado.

Exemplo:

class Person {
    var name: String
    init(name: String) { self.name = name }
}

var person: Person? = Person(name: "Alex")
weak var weakPerson: Person? = person

print(weakPerson?.name) // Optional("Alex")
person = nil
print(weakPerson?.name) // nil, pois o objeto foi removido

Assim, a referência fraca é sempre opcional e torna-se automaticamente nil quando o objeto é removido.