【发布时间】:2020-05-17 14:20:56
【问题描述】:
Swift 5,在 XCode 11.2.1 上。我一直在用 Java 编程,在这一点上对 Swift 的熟练程度只是中等,所以我的一些理解被 Java 习语所影响。
假设我们提供了一个协议,或者可能是一个伪抽象类,它可以在一个单独的模块中实现。然后,程序员将对他们的类的引用传递回第一个模块中的代码,该模块实例化他们的类。现在,在 Java 中这很困难,因为您无法保证子类将定义哪些初始化程序/静态方法。但是,在 Swift 中,您可以。这很整洁。除了,我还没有找到使用它们的方法。我期望会是你可以有像例如这样的代码
protocol FooP {
init(s: String)
}
func instantiate(clazz: FooP.Type) -> FooP {
return clazz.init(s: "qwerty")
}
...OOOOORRRR 确实有效,正如我所希望的那样。我认为在我的测试中,我只是未能找到 CLASS/.Type/.self 的正确组合来提示我成功的可能性。
由于我没有找到有关这种可能性的任何其他信息,尽管搜索了 30-60 分钟,我还是会回答我自己的问题。
【问题讨论】:
标签: ios swift types static swift-protocols