Funciones y variables static vs class en clases de Swift: ¿cuál es la diferencia?
¡Hola a todos! Empecé a estudiar Swift y me topé con un tema que no entiendo. En las clases se pueden declarar funciones y variables como static y también como class. Parece que ambas palabras clave funcionan de manera similar: permiten llamar métodos y obtener propiedades sin crear una instancia de la clase. Por ejemplo:
```swift
class MyClass {
static var staticProperty = "Propiedad estática"
class var classProperty: String {
return "Propiedad de clase"
}
static func staticMethod() {
print("Método estático")
}
class func classMethod() {
print("Método de clase")
}
}
MyClass.staticMethod() // funciona
MyClass.classMethod() // también funciona
```
Pero noté que si intento sobrescribir un método `static` en una subclase, Xcode se queja, mientras que un método `class` se sobrescribe sin problemas. ¿Por qué ocurre esto? ¿Y qué es mejor usar en general? ¿Hay casos en los que `static` es preferible y otros en los que `class`? Explíquenmelo, por favor, de manera sencilla. Gracias de antemano.