Avatar ·

¿Cuál es la diferencia entre static func y class func en Swift?

¡Hola! Empecé a estudiar Swift y me encontré con dos formas similares de declarar métodos: `static func` y `class func`. Parece que ambos permiten llamar al método a nivel de tipo, no en una instancia, pero no entiendo cuál es la diferencia fundamental. Por ejemplo, puedo escribir: ```swift class MyClass { static func staticMethod() { print("Este es un método estático") } class func classMethod() { print("Este es un método de clase") } } ``` Y llamarlos de la misma manera: `MyClass.staticMethod()` y `MyClass.classMethod()`. El resultado es el mismo: se imprimen las líneas. Entonces, ¿por qué dos palabras clave diferentes? Intenté crear una subclase y sobrescribir el método, pero el compilador se queja si intento sobrescribir `static func`. Mientras que `class func` parece permitir la sobrescritura. ¿Es esta la única diferencia? ¿O hay otros matices? ¿Quizás la diferencia está en el rendimiento o en cómo se almacenan en la memoria? Explíquenme, por favor, en detalle para qué sirve cada uno.