Junior — Middle
Kas saaksite selgitada, mida tähendab termin 'Unowned' mälu haldamise kontekstis?
sobes.tech AI
Vastus AI-lt
Konteksts, kus hallatakse mälu iOS-is (ja Swiftis), tähendab "Unowned" nõrk viide objekti, mis ei suurenda viidete arvu (retain count), kuid eeldab, et objekt eksisteerib selle viite kasutamise ajal.
Erinevused weak-ist:
weakviide võib muutudanil, kui objekt kustutatakse, ning seetõttu on see deklareeritud valikuna.unownedviide ei ole valikuline ja ei muutu automaatseltnil-ks. Kui viidatud objekt kustutatakse, põhjustab sellele juurdepääs jooksuaegse vea (crash).
Kasutatakse siis, kui on garanteeritud, et viidatud objekti eluiga on pikem või võrdne viite elueaga.
Näide:
class Owner {
var pet: Pet?
}
class Pet {
unowned let owner: Owner
init(owner: Owner) {
self.owner = owner
}
}
let owner = Owner()
owner.pet = Pet(owner: owner)
Siin hoiab Pet unowned viidet Owner-le, eeldades, et Owner elab kauem kui Pet.