Junior — Middle
¿Ha utilizado variables de referencia como Unowned en sus proyectos?
sobes.tech AI
Respuesta de la IA
Sí, en proyectos de iOS he utilizado variables de referencia como unowned.
unowned es un tipo de referencia débil que no incrementa el contador de referencias, pero asume que el objeto al que hace referencia siempre existirá durante el uso de esa referencia.
Esto es útil para prevenir ciclos de referencias fuertes, por ejemplo, en cierres o en referencias mutuas entre objetos, cuando un objeto garantiza que vivirá más que otro.
Ejemplo de uso de unowned en un cierre:
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
Aquí, tenant se declara como unowned, ya que el apartamento no debe existir sin el inquilino, y esto previene un ciclo de referencia fuerte.