Junior — Middle
Kas saaksite anda näidet, millal Swiftis kasutatakse `unowned` operaatorit?
sobes.tech AI
Vastus AI-lt
Swiftis kasutatakse unowned operaatorit nõrga viitamise deklaratsiooniks, mis ei ole valikuline ja eeldab, et viidatud objekt on alati olemas juurdepääsu ajal. See on kasulik tugevate viitamise tsüklite vältimiseks, näiteks sulgude või vastastikku viitavate objektide puhul, kui üks objektidest garanteerib, et ta elab kauem kui teine.
Näide unowned kasutamisest sulgus:
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) elab korteris \(apt.number)")
} else {
print("\(self.name) ei oma korterit")
}
}
}
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() // Tulem: John elab korteris 101
Siin kasutatakse unowned viidet Apartment-st Person-ile, et vältida tugevaid viite tsükleid, eeldades, et Person elab kauem kui Apartment.