Junior — Middle
Můžete uvést příklad, kdy se v kódu Swift používá operátor `unowned`?
sobes.tech AI
Odpověď od AI
Operátor unowned v jazyce Swift se používá k deklaraci slabé reference, která není volitelná a předpokládá, že objekt, na který odkazuje, vždy existuje během přístupu. To je užitečné pro prevenci silných referenčních cyklů, například při práci s uzávěry nebo objekty, které se vzájemně odkazují, když je zaručeno, že jeden z objektů žije déle než druhý.
Příklad použití unowned v uzávěru:
class Person {
let name: String
var apartment: Apartment?
init(name: String) {
self.name = name
}
lazy var printApartment = { [unowned self] in
if let apt = self.apartment {
print("\(self.name) žije v bytě \(apt.number)")
} else {
print("\(self.name) nemá byt")
}
}
}
class Apartment {
let number: Int
unowned let tenant: Person
init(number: Int, tenant: Person) {
self.number = number
self.tenant = tenant
}
}
let john = Person(name: "John")
let apt1 = Apartment(number: 101, tenant: john)
john.apartment = apt1
john.printApartment() // Výstup: John žije v bytě 101
Zde je unowned použit pro odkaz z Apartment na Person, aby se zabránilo silnému referenčnímu cyklu, předpokládá se, že Person žije déle než Apartment.