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.