Funções e variáveis Static vs class em classes Swift: qual a diferença?
Olá a todos! Comecei a estudar Swift e me deparei com um tópico que não entendi. Em classes, podemos declarar funções e variáveis como static e também como class. Aparentemente, ambas as palavras-chave funcionam de forma semelhante: permitem chamar métodos e acessar propriedades sem criar uma instância da classe. Por exemplo:
```swift
class MyClass {
static var staticProperty = "Propriedade estática"
class var classProperty: String {
return "Propriedade de classe"
}
static func staticMethod() {
print("Método estático")
}
class func classMethod() {
print("Método de classe")
}
}
MyClass.staticMethod() // funciona
MyClass.classMethod() // também funciona
```
Mas notei que, se tento sobrescrever um método `static` em uma subclasse, o Xcode reclama, enquanto um método `class` pode ser sobrescrito sem problemas. Por que isso? E o que é melhor usar? Existem casos em que `static` é preferível, e outros em que `class` é melhor? Expliquem, por favor, de forma simples. Agradeço desde já.