Sobes.tech
Junior — Middle

Minden értéket tároló adattípus szükségszerűen használja a másolási mechanizmust hozzárendelés vagy átadás során?

sobes.tech MI

Válasz az MI-től

Minden adattípus nem használ másolási mechanizmust hozzárendelés vagy átadás során. iOS-en (és Swiftben) megkülönböztetjük az értéktípusokat (value types) és a referencia típusokat (reference types).

  • Értéktípusok (például struktúrák, enumerációk, alapvető típusok, mint az Int, Double) másolódnak hozzárendelés vagy átadás esetén — új adatmásolat jön létre.
  • Referencia típusok (például osztályok) csak a hivatkozást másolják az objektumra, nem magát az objektumot. Így több változó is mutathat ugyanarra az objektumra a memóriában.

Swift példával:

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 // érték másolása
p2.x = 10
print(p1.x) // 0

var person1 = Person(name: "Alice")
var person2 = person1 // hivatkozás másolása
person2.name = "Bob"
print(person1.name) // Bob

Tehát, a másolási mechanizmus csak az értéktípusokra vonatkozik, míg a referencia típusok a hivatkozás átadását használják.