Sobes.tech
Junior

Co jsou referenční typy?

sobes.tech AI

Odpověď od AI

Typy odkazů (Reference Types) jsou datové typy, které při přiřazení nebo předání funkci předávají odkaz na instanci objektu v paměti, nikoliv její kopii.

Klíčové vlastnosti:

  • Více proměnných může odkazovat na stejnou instanci objektu.
  • Změna stavu objektu přes jeden odkaz se odráží ve všech ostatních odkazech na tento stejný objekt.
  • Práce s referenčními typy probíhá přes ukazatele na objekty na haldě (heap).

Příklady referenčních typů ve Swift:

  • Třídy (class)
  • Funkce (func)
  • Uzávěry ({...})

Porovnání s hodnotovými typy (Value Types):

Charakteristika Referenční typ (Reference Type) Hodnotový typ (Value Type)
Co se předává Odkaz (adresa v paměti) Kopie hodnoty
Místo uložení Hlava (heap) Zásobník (stack)
Kopírování Odkaz se kopíruje Hodnota se kopíruje
Změna Ovlivňuje původní objekt Ovlivňuje kopii
class MyClass {
    var value: Int

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

var object1 = MyClass(value: 10) // Vytvoření instance třídy
var object2 = object1          // object2 nyní odkazuje na stejnou instanci jako object1

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

object2.value = 20 // Změna přes object2

print(object1.value) // Výstup: 20 (změna přes object2 ovlivnila object1)
print(object2.value) // Výstup: 20

Správa paměti pro referenční typy ve Swiftu je prováděna pomocí Automatického počítání odkazů (ARC).