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.