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