AD

¿Ya dominas lo básico? Un curso estructurado de Swift es la vía rápida para dar el salto.

Ver cursos de Swift en Udemy

Enlace de afiliado. No te cuesta nada extra.

🐦Lecciones de Swift
Lección 40 / 68

Copia superficial y copia profunda

En esta lección verás la diferencia entre copiar una referencia y copiar el contenido.

Al asignar un objeto de una class a otra variable, ambas apuntan al mismo objeto: modificar uno cambia el otro. Para tener una copia independiente hay que crear una instancia nueva.

El código de ejemplo lo demuestra con una dirección compartida y luego con una copia real.

La distinción clave en Swift es entre tipos por valor y tipos por referencia. Las struct, los enum y las colecciones (Array, Dictionary, Set, String) son tipos por valor: se copian al asignarlos y este problema no existe. Solo las class son por referencia.

Por eso la recomendación de Apple es empezar por struct y pasar a class solo cuando necesites identidad compartida o herencia. La mayoría de los fallos de «un objeto cambió y nadie parece haberlo tocado» desaparecen con esa decisión.

Y aunque copiar un array grande suene caro, Swift usa copia perezosa: la copia real solo ocurre cuando uno de los dos se modifica. En el uso normal no se nota.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Swift directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)