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.