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