我需要写这样的东西:
func createInstanceOfClass(someClass: Class) -> UIViewController {
var vc = someClass()
//some initialization
...
//
return
}
我发现了一些类似的问题,但其中一些不适合这项任务,一些关于param T
似乎是额外的。
答案 0 :(得分:4)
以下是如何执行此操作的示例。使用T.Type
引用T
和T.self
的元型,以引用类型T
。
protocol DefaultConstructible {
init()
}
class A: DefaultConstructible {
required init() {}
}
struct B: DefaultConstructible {
init() {}
}
func makeAnInstance<T: DefaultConstructible>(of c: T.Type) -> T {
return c.init()
}
let a = makeAnInstance(of: A.self)
let b = makeAnInstance(of: B.self)