Avatar ·

Qual é a diferença entre static func e class func em Swift?

Olá! Comecei a estudar Swift e me deparei com duas formas semelhantes de declarar métodos: `static func` e `class func`. Ambos parecem permitir chamar o método no nível do tipo, não na instância, mas não entendo qual é a diferença fundamental. Por exemplo, posso escrever: ```swift class MyClass { static func staticMethod() { print("Este é um método estático") } class func classMethod() { print("Este é um método de classe") } } ``` E chamá-los da mesma forma: `MyClass.staticMethod()` e `MyClass.classMethod()`. O resultado é o mesmo – as strings são impressas. Então por que duas palavras-chave diferentes? Tentei criar uma subclass e sobrescrever o método, mas o compilador reclama se tento sobrescrever `static func`. Já `class func` parece permitir sobrescrita. Essa é a única diferença? Ou existem outras nuances? Talvez diferença de performance ou como são armazenadas na memória? Explique, por favor, detalhadamente para que serve cada uma.