Junior — Middle
Можете ли да дате пример када се у коду Swift користи оператор `unowned`?
sobes.tech АИ
Одговор од АИ
Operator unowned u Swift-u se koristi za deklarisanje slabog referencnog pokazivača koji nije opcionalan i pretpostavlja da objekat na koji se odnosi uvek postoji tokom pristupa. Ovo je korisno za sprečavanje cikličnih jakih referenci, na primer, prilikom rada sa zatvaranjima ili međusobno referenciranim objektima, kada je garantovano da jedan od objekata živi duže od drugog.
Primer korišćenja unowned u zatvaranju:
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) živi u stanu \(apt.number)")
} else {
print("\(self.name) nema stan")
}
}
}
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() // Ispisaće: John živi u stanu 101
Ovde, unowned se koristi za referencu iz Apartment na Person, kako bi se izbegao ciklus jakih referenci, pretpostavljajući da Person živi duže od Apartment.