Sobes.tech
Junior — Middle

Todos os tipos de dados que armazenam valores usam necessariamente o mecanismo de cópia ao atribuir ou passar?

sobes.tech IA

Resposta da IA

Nem todos os tipos de dados usam o mecanismo de cópia ao atribuir ou transferir. No iOS (e Swift), distinguem-se os tipos de valor (value types) e os tipos de referência (reference types).

  • Tipos de valor (por exemplo, estruturas, enumerações, tipos básicos como Int, Double) são copiados ao atribuir ou transferir — uma nova cópia dos dados é criada.
  • Tipos de referência (por exemplo, classes) apenas copiam o ponteiro para o objeto, não o próprio objeto. Assim, várias variáveis podem apontar para o mesmo objeto na memória.

Exemplo em 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 // copia o valor
p2.x = 10
print(p1.x) // 0

var person1 = Person(name: "Alice")
var person2 = person1 // copia a referência
person2.name = "Bob"
print(person1.name) // Bob

Assim, o mecanismo de cópia aplica-se apenas aos tipos de valor, enquanto os tipos de referência usam a transferência de referência.