Junior
Mis on viidetüübid?
sobes.tech AI
Vastus AI-lt
Viidatüübid (Reference Types) on sellised andmetüübid, mis omistamisel või funktsioonile edastamisel edastavad viite objekti eksemplarile mälus, mitte selle koopiat.
Peamised omadused:
- Mitmed muutujad võivad viidata samale objekti eksemplarile.
- Objekti oleku muutmine ühe viitega kajastub kõigis teistes viidetes sellele samale objekti.
- Viidatüüpidega töötamine toimub viitade kaudu virnas (heap).
Viidatüüpide näited Swiftis:
- Klassid (
class) - Funktsioonid (
func) - Sulgud (
{...})
Võrdlus väärtustüüpidega (Value Types):
| Omadus | Viidatüüp (Reference Type) | Väärtustüüp (Value Type) |
|---|---|---|
| Mida edastatakse | Viide (aadress mälus) | Koopia väärtusest |
| Salvestuskoht | Virnas (Heap) | Kihis (Stack) |
| Kopeerimine | Viide kopeeritakse | Väärtus kopeeritakse |
| Muutmine | Mõjutab algset objekti | Mõjutab koopiat |
class MyClass {
var value: Int
init(value: Int) {
self.value = value
}
}
var object1 = MyClass(value: 10) // Loome klassi eksemplari
var object2 = object1 // object2 viitab nüüd samale eksemplarile nagu object1
print(object1.value) // Väljund: 10
print(object2.value) // Väljund: 10
object2.value = 20 // Muudame väärtust läbi object2
print(object1.value) // Väljund: 20 (Muutus läbi object2 mõjutas object1)
print(object2.value) // Väljund: 20
Mälu haldamine viidatüüpide jaoks Swiftis toimub automaatse viidete arvestamise (ARC) abil.