Pure Swift Klasse gemäß Protokoll mit statischer Methode - Problem mit Upcasting
Gegeben wir haben ein Swift-Protokoll mit einemstatic
Methode
protocol Creatable: class {
static func create() -> AnyObject
}
und eine reine Swift-Klasse, die dem Protokoll entspricht:
class Foo : Creatable {
static func create() -> AnyObject {
return Foo() as AnyObject
}
}
päter, wenn versucht wird, dieses Protokoll zu verwenden, indem auf Typ @ gearbeitet wirCreatable
z.B.
var f : Creatable = Foo.self
f.create()
Der Compiler beschwert sich über Folgendes:
error: type 'Foo.Type' does not conform to protocol 'Creatable'
Die Frage ist: Ist das eine Swift-Einschränkung oder ich verwende die Protokolle und die static / class-Methode falsch.
Objective-C-Äquivalent wäre etwa:
Class someClass = [Foo class];
if ([someClass conformsToProtocol:@protocol(Creatable)]) {
[(Class <Foo>)someClass create];
}