Classe Pure Swift em conformidade com protocolo com método estático - problema com upcasting
Dado que temos um protocolo Swift com umstatic
método:
protocol Creatable: class {
static func create() -> AnyObject
}
e uma classe Swift pura, em conformidade com o protocolo:
class Foo : Creatable {
static func create() -> AnyObject {
return Foo() as AnyObject
}
}
Mais tarde, quando alguém tenta fazer uso desse protocolo, operando no tipoCreatable
por exemplo.:
var f : Creatable = Foo.self
f.create()
O compilador reclama com o seguinte:
error: type 'Foo.Type' does not conform to protocol 'Creatable'
A questão é: essa é uma limitação do Swift ou estou usando os protocolos e o método static / class da maneira errada.
O equivalente ao Objetivo-C seria algo como:
Class someClass = [Foo class];
if ([someClass conformsToProtocol:@protocol(Creatable)]) {
[(Class <Foo>)someClass create];
}