相关疑难解决方法(0)

我可以将一个元类对象转换为Swift中的协议类型吗?

Swift继承了Objective-C的元类概念:类本身也被认为是对象.类Foo的对象的类是Foo.self,它是类型的Foo.Type.如果Foo继承自Bar,那么Foo.self也可以分配给类型的变量Bar.Type.这至少有两个好处:

  • 它允许覆盖"静态方法";
  • 以类型安全的方式创建未知类的实例并且不使用反射很容易.

我现在特别关注第二个.只是为了确保每个人都理解我所追求的,这是一个例子:

class BaseFoo {
    var description: String { return "BaseFoo" }
}

class DerivedFoo: BaseFoo {
    override var description: String { return "DerivedFoo" }
}

let fooTypes: [BaseFoo.Type] = [BaseFoo.self, DerivedFoo.self] // metaclass magic!
for type in fooTypes {
    let object: BaseFoo = type() // metaclass magic!
    println(object)
}
Run Code Online (Sandbox Code Playgroud)

现在,我有一个AnyClass对象数组(可以分配任何元类实例AnyClass,就像任何对象都可以分配AnyObject),我想找到哪些实现给定的协议.该协议将声明一个初始化器,我将像上面的例子中那样实例化该类.例如:

protocol Foo {
    init(foo: String)
}

class …
Run Code Online (Sandbox Code Playgroud)

metaclass swift

8
推荐指数
1
解决办法
1453
查看次数

标签 统计

metaclass ×1

swift ×1