Junior — Middle
Vai varat sniegt piemēru, kad Swift kodā tiek izmantots operators `unowned`?
sobes.tech AI
Atbilde no AI
Swift valodā unowned operators tiek izmantots, lai deklarētu vājinātu atsauci, kas nav opcionala un pieņem, ka objekts, uz kuru tā attiecas, vienmēr pastāv piekļuves laikā. Tas ir noderīgi, lai novērstu stipru atsauces ciklu, piemēram, strādājot ar aizsargiem vai savstarpēji atsaucīgiem objektiem, kad viens no objektiem garantē, ka tas dzīvos ilgāk nekā otrs.
unowned izmantošanas piemērs aizsargā:
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) dzīvo dzīvoklī \(apt.number)")
} else {
print("\(self.name) nav dzīvokļa")
}
}
}
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() // Rezultāts: John dzīvo dzīvoklī 101
Šeit, unowned tiek izmantots, lai norādītu uz Apartment uz Person, lai novērstu stipru atsauces ciklu, pieņemot, ka Person dzīvos ilgāk nekā Apartment.