Avatar ·

Quelle est la différence entre static func et class func en Swift ?

Bonjour ! J'ai commencé à apprendre Swift et je suis tombé sur deux façons similaires de déclarer des méthodes : `static func` et `class func`. Apparemment, les deux permettent d'appeler une méthode au niveau du type, et non sur une instance, mais je ne comprends pas la différence fondamentale. Par exemple, je peux écrire : ```swift class MyClass { static func staticMethod() { print("C'est une méthode statique") } class func classMethod() { print("C'est une méthode de classe") } } ``` Et les appeler de la même manière : `MyClass.staticMethod()` et `MyClass.classMethod()`. Le résultat est le même – les chaînes sont imprimées. Pourquoi alors deux mots-clés différents ? J'ai essayé de créer une sous-classe et de redéfinir la méthode, mais le compilateur se plaint si j'essaie de redéfinir `static func`. Alors que `class func` semble permettre la redéfinition. Est-ce la seule différence ? Ou y a-t-il d'autres subtilités ? Peut-être une différence de performance ou dans la façon dont elles sont stockées en mémoire ? Expliquez-moi, s'il vous plaît, en détail, à quoi sert chacun.