Sobes.tech
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.