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];
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage