Sobes.tech
Junior

Čo sú referenčné typy?

sobes.tech AI

Odpoveď od AI

Typy referenčných typov (Reference Types) sú typy údajov, ktoré pri priraďovaní alebo odovzdávaní funkcii odovzdávajú odkaz na inštanciu objektu v pamäti, nie jeho kópiu.

Kľúčové vlastnosti:

  • Viaceré premenné môžu odkazovať na tú istú inštanciu objektu.
  • Zmena stavu objektu cez jeden odkaz sa odráža vo všetkých ostatných odkazoch na tento rovnaký objekt.
  • Práca s referenčnými typmi sa vykonáva cez ukazovatele na objekty na halde (heap).

Príklady referenčných typov v Swift:

  • Triedy (class)
  • Funkcie (func)
  • Uzávierky ({...})

Porovnanie s hodnotovými typmi (Value Types):

Charakteristika Referenčný typ (Reference Type) Hodnotový typ (Value Type)
Čo sa prenáša Odkaz (adresa v pamäti) Kópia hodnoty
Miesto uloženia Heap Stack
Kópírovanie Odkaz sa kopíruje Hodnota sa kopíruje
Zmena Ovplyvňuje pôvodný objekt Ovplyvňuje kópiu
class MyClass {
    var value: Int

    init(value: Int) {
        self.value = value
    }
}

var object1 = MyClass(value: 10) // Vytvorenie inštancie triedy
var object2 = object1          // object2 teraz odkazuje na rovnakú inštanciu ako object1

print(object1.value) // Výstup: 10
print(object2.value) // Výstup: 10

object2.value = 20 // Zmena cez object2

print(object1.value) // Výstup: 20 (zmena cez object2 ovplyvnila object1)
print(object2.value) // Výstup: 20

Správa pamäte pre referenčné typy v Swift sa vykonáva pomocou Automatického počítania odkazov (ARC).