Milline on nõrkade (weak) ja omandamata (unowned) viidete roll mälu haldamisel programmeerimiskeeltes?
sobes.tech AI
Vastus AI-lt
Nõrgad (weak) ja mitte-omandavad (unowned) viited kasutatakse mälu haldamiseks ja tsükliliste viidete vältimiseks, mis võivad põhjustada mälu lekked.
-
Nõrgad (weak) viited: need on viited, mis ei suurenda objekti viidete loendurit. Kui objekt, millele nõrk viide osutab, kustutatakse, muutub nõrk viide automaatselt nil-iks (Swiftis). See on kasulik tugevate tsüklite vältimiseks, näiteks vahet delegaadi ja selle omanikku vahel.
-
Omandamatud (unowned) viited: samuti ei suurenda viidete loendurit, kuid eeldatakse, et objekt eksisteerib alati viite kasutamise ajal. Kui objekt on juba kustutatud, põhjustab unowned viidete kasutamine vea (crash). Neid kasutatakse siis, kui viidatud objekti elutsükkel on garanteeritult pikem kui viide.
Näide Swiftis:
class Person {
var apartment: Apartment?
}
class Apartment {
weak var tenant: Person? // weak, et vältida tsüklit
}
Siin takistab weak viide Person objekti mäluhoidlas hoida, kui see enam ei ole vajalik.