Sobes.tech
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.