Junior — Middle
Kas teie projektides on kasutatud viitamismuutujat nagu Unowned?
sobes.tech AI
Vastus AI-lt
Jah, iOS projektides olen kasutanud unowned tüüpi viiteid.
unowned on nõrk viide, mis ei suurenda viidete loendurit, kuid eeldab, et viidatud objekt eksisteerib alati selle viite kasutamise ajal.
See on kasulik tugevate viidetsüklite vältimiseks, näiteks sulgudes või vastastikustes viidetes objektide vahel, kui üks objekt garanteerib, et see elab kauem kui teine.
Näide unowned kasutamisest sulgus:
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
Siin tenant on deklareeritud kui unowned, kuna korter ei tohiks eksisteerida ilma üürnikuta, ja see takistab tugeva viidetsükli tekkimist.