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).