Kommen aus einem Objective-C-Hintergrund, wo jedes Protokoll immer eine Delegate-Eigenschaft haben muss. In Swift scheint das nicht der Fall zu sein, und es bricht das Paradigma, das ich über Protokolle hatte.Swift vs Objcective-C-Protokolle
AFAIK in Swift, Protokolle werden für 2 Hauptzwecke verwendet: Delegationsmuster (das einen Delegaten wie Objective-C benötigen würde) und auch Zusammensetzungsmuster (das in Objective-C nicht existierte und keinen Delegaten benötigt Eigenschaft) gekoppelt mit einer Erweiterung, die es effektiver macht als das traditionelle Vererbungsmuster in Objective-C.
Habe ich richtig verstanden? Können Sie bitte klarstellen?
EDIT:
Was ich meine, durch das, was ich sehe, ist anders: Von Apple WWDC
Der traditionelle Weg ist (Slide76):
class Ordered {
func precedes(other: Ordered) -> Bool { fatalError("implement me!") }
}
class Number : Ordered {
var value: Double = 0
override func precedes(other: Ordered) -> Bool {
return self.value < (other as! Number).value
}
}
Der neue Swift Weg ist (Folie 90):
protocol Ordered {
func precedes(other: Self) -> Bool
}
struct Number : Ordered {
var value: Double = 0
func precedes(other: Number) -> Bool {
return self.value < other.value
}
}
Und ich habe noch nie Protokolle in Objective-C verwendet. Wie unterscheiden sie sich?
* "... wo immer jedes Protokoll muss einen Delegaten Eigenschaft haben" * - Nein –
Sie haben einige sehr falsche Annahmen. In Objective-C benötigen Sie keine Delegate-Eigenschaft für jedes Protokoll. – rmaddy
Auch jede einzelne Klasse mit einer oder mehreren Eigenschaften verwendet das Kompositionsmuster.Das hat nichts mit der Programmiersprache zu tun. Und Protokolle haben nichts mit dem Kompositionsmuster (in irgendeiner Sprache) zu tun. – rmaddy