Sobes.tech
Junior — Middle

¿Se puede ampliar una clase o estructura existente agregándole una nueva propiedad mediante extensiones?

sobes.tech AI

Respuesta de la IA

En Swift, las extensiones permiten agregar nuevos métodos, propiedades calculadas, inicializadores, subíndices y tipos anidados a clases, estructuras o enumeraciones existentes. Sin embargo, las extensiones no pueden agregar propiedades almacenadas. Esto se debe a que las extensiones no modifican la estructura interna del tipo, sino que simplemente añaden funcionalidad.

Si necesitas agregar una nueva propiedad, puedes usar una propiedad calculada, que devuelve un valor calculado en tiempo de ejecución, pero no se almacena en la memoria del objeto.

Ejemplo de una propiedad calculada en una extensión:

extension String {
    var reversedString: String {
        return String(self.reversed())
    }
}

let text = "Hello"
print(text.reversedString) // Salida: "olleH"

Si necesitas almacenar un nuevo valor, puedes usar objetos asociados a través del runtime de Objective-C, pero esto no es un método estándar y solo se aplica a clases que heredan de NSObject.