Учитывая, что у нас есть протокол Swift с одним методом static
:
protocol Creatable: class {
static func create() -> AnyObject
}
и чистый класс Swift, который соответствует протоколу:
class Foo : Creatable {
static func create() -> AnyObject {
return Foo() as AnyObject
}
}
Позже, когда вы пытаетесь использовать этот протокол, работая по типу Creatable
например:
var f : Creatable = Foo.self
f.create()
Компилятор жалуется на следующее:
error: type 'Foo.Type' does not conform to protocol 'Creatable'
Вопрос в следующем: это ограничение Swift, или я использую протоколы и метод static/class неправильно.
Objective-C эквивалент будет выглядеть примерно так:
Class someClass = [Foo class];
if ([someClass conformsToProtocol:@protocol(Creatable)]) {
[(Class <Foo>)someClass create];
}