Junior — Middle
Používajú všetky dátové typy, ktoré ukladajú hodnoty, nevyhnutne mechanizmus kopírovania pri priraďovaní alebo prenose?
sobes.tech AI
Odpoveď od AI
Všetky dátové typy nepoužívajú pri priraďovaní alebo prenose mechanizmus kopírovania. Na iOS (a Swift) rozlišujeme typy hodnôt (value types) a referenčné typy (reference types).
- Typy hodnôt (napríklad štruktúry, enumy, základné typy ako Int, Double) sa kopírujú pri priraďovaní alebo prenose — vytvára sa nová kópia dát.
- Referenčné typy (napríklad triedy) kopírujú iba odkaz na objekt, nie samotný objekt. Takto môže viacero premenných odkazovať na ten istý objekt v pamäti.
Príklad v Swift:
struct Point { var x: Int; var y: Int }
class Person { var name: String
init(name: String) { self.name = name }
}
var p1 = Point(x: 0, y: 0)
var p2 = p1 // kopíruje hodnotu
p2.x = 10
print(p1.x) // 0
var person1 = Person(name: "Alice")
var person2 = person1 // kopíruje odkaz
person2.name = "Bob"
print(person1.name) // Bob
Preto sa mechanizmus kopírovania používa iba pri typoch hodnôt, zatiaľ čo referenčné typy používajú prenos odkazu.