Sobes.tech
Junior — Middle

Toate tipurile de date care stochează valori utilizează neapărat mecanismul de copiere la atribuirea sau transmiterea?

sobes.tech AI

Răspuns de la AI

Nu toate tipurile de date utilizează mecanismul de copiere la atribuire sau transfer. În iOS (și Swift), se disting tipurile de valori (value types) și tipurile de referință (reference types).

  • Tipuri de valori (de exemplu, structuri, enumerări, tipuri de bază precum Int, Double) sunt copiate la atribuție sau transfer — se creează o copie nouă a datelor.
  • Tipuri de referință (de exemplu, clase) copiază doar referința la obiect, nu obiectul în sine. Astfel, mai multe variabile pot indica același obiect în memorie.

Exemplu în 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 // se copiază valoarea
p2.x = 10
print(p1.x) // 0

var person1 = Person(name: "Alice")
var person2 = person1 // se copiază referința
person2.name = "Bob"
print(person1.name) // Bob

Prin urmare, mecanismul de copiere se aplică doar tipurilor de valori, în timp ce tipurile de referință utilizează transferul de referință.