Junior — Middle
Vai jūsu projektos esat izmantojis atsauces mainīgos, piemēram, Unowned?
sobes.tech AI
Atbilde no AI
Jā, iOS projektos izmantoju unowned tipa atsauces.
unowned ir vāja atsauce, kas nepalielina atsauču skaitītāju, bet pieņem, ka objekts, uz kuru atsaucas, vienmēr pastāvēs tās izmantošanas laikā.
Tas ir noderīgi, lai novērstu stipru atsauču ciklus, piemēram, aizvērumos vai savstarpējās atsaucēs starp objektiem, kad viens objekts garantē, ka tas dzīvos ilgāk nekā cits.
unowned izmantošanas piemērs:
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
Šeit tenant ir deklarēts kā unowned, jo dzīvoklim nevajadzētu pastāvēt bez īrnieka, un tas novērš stipru atsauču ciklu.