Junior
¿En qué consiste la diferencia entre clases y estructuras en el lenguaje de programación Swift?
sobes.tech AI
Respuesta de la IA
Las clases son tipos de referencia, las estructuras son tipos de valor.
Diferencias principales:
- Herencia: Las clases soportan herencia, las estructuras no.
- Conversión de tipos: Permite verificar e interpretar el tipo de una instancia de clase en tiempo de ejecución.
- Desinicialización: Las clases tienen destructores (
deinit) para liberar recursos, las estructuras no. - Contador de referencias: Las clases usan conteo automático de referencias (ARC) para gestionar la memoria. Las estructuras se copian al pasarlas o asignarlas (puede aplicarse copy-on-write para optimización).
- Métodos mutantes: Métodos que modifican las propiedades de una instancia de estructura o enumeración deben estar marcados con la palabra clave
mutating. Para las clases, esto no es necesario.
Ejemplo de creación:
// Estructura
struct Point {
var x: Int
var y: Int
}
// Clase
class Circle {
var radius: Double
var center: Point
init(radius: Double, center: Point) {
self.radius = radius
self.center = center
}
}
Ejemplo de comportamiento al asignar:
// Estructura
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Se crea una copia
point2.x = 10
print(point1.x) // Salida: 1
// Clase
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Se realiza una asignación de referencia
circle2.radius = 10.0
print(circle1.radius) // Salida: 10.0