J'ai cherché le nouveau langage Swift en essayant de trouver l'équivalent d'une interface (en Java) ou d'un protocole (en objectif-c) dans Swift, après avoir navigué sur Internet et en cherchant dans le livre fourni par Apple, je n'arrive toujours pas à le trouver.
Quelqu'un sait-il quel est le nom de ce composant dans Swift et quelle est sa syntaxe?
Les protocoles dans Swift sont très similaires à Objc, sauf que vous pouvez les utiliser non seulement sur les classes, mais aussi sur les structures et les énumérations.
protocol SomeProtocol {
var fullName: String { get } // You can require iVars
class func someTypeMethod() // ...or class methods
}
La conformité à un protocole est un peu différente:
class myClass: NSObject, SomeProtocol // Specify protocol(s) after the class type
Vous pouvez également étendre un protocole avec une implémentation de fonction par défaut (remplaçable):
extension SomeProtocol {
// Provide a default implementation:
class func someTypeMethod() {
print("This implementation will be added to objects that adhere to SomeProtocol, at compile time")
print("...unless the object overrides this default implementation.")
}
}
Remarque: les implémentations par défaut doivent être ajoutées via l'extension, et non dans la définition de protocole elle-même - un protocole n'est pas un objet concret, il ne peut donc pas avoir de corps de méthode attachés. Considérez une implémentation par défaut comme un modèle de style C; essentiellement le compilateur copie la déclaration et la colle dans chaque objet qui adhère au protocole.
Swift a également des protocoles, ici est la documentation pertinente: