Junior — Middle
Používají všechny datové typy, které ukládají hodnoty, nutně mechanismus kopírování při přiřazení nebo předání?
sobes.tech AI
Odpověď od AI
Všechna datováována typy nepoužívají při přiřazení nebo přenosu mechanismus kopírování. Na iOS (a Swift) rozlišujeme typy hodnot (value types) a referenční typy (reference types).
- Typy hodnot (například struktury, výčty, základní typy jako Int, Double) se při přiřazení nebo přenosu kopírují — vytváří se nová kopie dat.
- Referenční typy (například třídy) kopírují pouze odkaz na objekt, nikoliv samotný objekt. Tímto způsobem může více proměnných odkazovat na stejný objekt v paměti.
Pří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
Protože mechanismus kopírování se používá pouze u typů hodnot, zatímco referenční typy používají předání odkazu.