Junior
Kas yra nuorodų tipai?
sobes.tech AI
Atsakymas iš AI
Nuorodų tipai (Reference Types) yra tokie duomenų tipai, kurie priskyrimo ar perdavimo funkcijai metu perduoda nuorodą į objekto egzempliorių atmintyje, o ne pačią jo kopiją.
Pagrindinės savybės:
- Daug vartotojų gali nuorodoti į tą patį objekto egzempliorių.
- Objekto būsenos keitimas per vieną nuorodą atsispindi visuose kituose nuorodose į tą patį objektą.
- Darbas su nuorodų tipais vyksta per rodykles į objektus krūvoje (heap).
Pavyzdžiai nuorodų tipų Swift:
- Klasės (
class) - Funkcijos (
func) - Užuominos (
{...})
Palyginimas su reikšminiais tipais (Value Types):
| Savybė | Nuorodų tipas (Reference Type) | Reikšminis tipas (Value Type) |
|---|---|---|
| Kas perduodama | Nuoroda (adresas atmintyje) | Kopija reikšmės |
| Saugojimo vieta | Krūva (Heap) | Stekas (Stack) |
| Kopijavimas | Nuoroda kopijuojama | Reikšmė kopijuojama |
| Keitimas | Veikia ant pradinio objekto | Veikia ant kopijos |
class MyClass {
var value: Int
init(value: Int) {
self.value = value
}
}
var object1 = MyClass(value: 10) // Sukuriamas klasės egzempliorius
var object2 = object1 // object2 dabar nuoroda į tą patį egzempliorių kaip ir object1
print(object1.value) // Išvestis: 10
print(object2.value) // Išvestis: 10
object2.value = 20 // Keičiamas reikšmė per object2
print(object1.value) // Išvestis: 20 (Keitimas per object2 paveikė object1)
print(object2.value) // Išvestis: 20
Atminties valdymas nuorodų tipams Swift vyksta naudojant Automatic Reference Counting (ARC).