Ich gehe über Swift 3 Tutorials und Dokumentation, und ich sehe, dass es ein Designmuster gibt, das jeder bei der Arbeit mit Protokollen verwendet. Es beginnt damit, ein Protokoll mit einer kleinen Anzahl von Variablen zu deklarieren (manchmal nur ein oder zwei) und dann eine Erweiterung für dieses Protokoll zu erstellen und in der Erweiterung einige Methoden zu definieren. Zum Beispiel (das ist wirklich ein dummes Codebeispiel, nur zur Demonstration):Warum erweitern Sie Ihr eigenes Protokoll?
protocol Bicycle {
var numberOfWheels: Int {get}
var isMoving: Bool {get set}
}
extension Bicycle {
func startPedaling() { isMoving = true }
func stopPedaing() { isMoving = false }
}
Das Protokoll und die Erweiterung ist unter meiner vollen Kontrolle (da ich bin der Entwickler, und ich habe Zugriff auf diese Ressource-Datei) . Außerdem befinden sie sich beide in derselben Ressourcendatei.
Warum befinden sich die Methoden also in der Erweiterung und nicht im ursprünglichen Protokoll? Zum Beispiel:
protocol Bicycle {
var numberOfWheels: Int {get}
var isMoving: Bool {get set}
func startPedaling() { isMoving = true }
func stopPedaing() { isMoving = false }
}
Danke, Boris.
Ihr zweites Beispiel würde nicht kompilieren. - Suche "Bereitstellung von Standardimplementierungen" unter https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html. –