Da wir ein Swift-Protokoll mit einer static
Methode haben:Reine Swift-Klasse-Protokoll mit statischer Methode konforme - Ausgabe mit Upcasting
protocol Creatable: class {
static func create() -> AnyObject
}
und eine reine Swift-Klasse, die das Protokoll entspricht:
class Foo : Creatable {
static func create() -> AnyObject {
return Foo() as AnyObject
}
}
Später, wenn man versucht, die Verwendung dieses Protokolls durch den Einsatz auf Typ Creatable
zB zu machen:
var f : Creatable = Foo.self
f.create()
Der Compiler beschwert sich mit den folgenden:
error: type 'Foo.Type' does not conform to protocol 'Creatable'
Die Frage ist: ist dies eine Einschränkung Swift oder ich die Protokolle und statische/Klassenmethode in die falsche Art und Weise verwendet wird. selbst
Class someClass = [Foo class];
if ([someClass conformsToProtocol:@protocol(Creatable)]) {
[(Class <Foo>)someClass create];
}
Zuerst habe ich über die statische Funktion in einer Klasse fragen, .. 'static' ist eigentlich für' struct's und 'CLASS' für‚statische‘Klassenfunktionen – borchero
@OliverBorchert: in schnellen 1.2 Wir haben _real_ statische, einschließlich gespeicherter Eigenschaften – Antonio
Oh, ich habe noch nicht realisiert, danke für den Hinweis^_^ – borchero