Junior — Middle
Have you used reference variables like Unowned in your projects?
sobes.tech AI
Answer from AI
Yes, in iOS projects I have used reference variables of the unowned type.
unowned is a type of weak reference that does not increase the reference count, but assumes that the object it references will always exist during its use.
This is useful for preventing strong reference cycles, for example, in closures or mutual references between objects, when one object is guaranteed to outlive the other.
An example of using unowned in a 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
Here, tenant is declared as unowned because the apartment should not exist without a tenant, which prevents a strong reference cycle.