将 class 作为参数传递给函数 returns swift 中的此类对象?

Pass class as param into function which returns an object of this type in swift?

我需要这样写:

func createInstanceOfClass(someClass: Class) -> UIViewController {
  var vc = someClass()

  //some initialization
  ...
  //

  return 
}

我发现了一些类似的问题,但其中一些不适合这个任务,一些关于参数 T 似乎是额外的。

这里是您如何执行此操作的示例。使用 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)