【发布时间】:2019-05-19 07:29:43
【问题描述】:
假设我确实有一个协议TestProtocol 和类TestClass1 和TestClass2 符合TestProtocol:
protocol TestProtocol: AnyObject { }
class TestClass1: TestProtocol { }
class TestClass2: TestProtocol { }
进一步假设我确实定义了一个元类型数组
var testArray: [TestProtocol.Type] = [TestClass1.self, TestClass2.self]
如何根据testArray的条目创建TestClass1和TestClass2的实例对象?
p.s.:这应该在不创建检查 TestClass1.self 和 TestClass2.self 之类的开关结构的情况下完成
var instanceArray: [TestProtocol] = []
for element in testArray {
if element == TestClass1.self {
instanceArray.append(TestClass1())
} else if element == TestClass2.self {
instanceArray.append(TestClass2())
}
}
我研究了泛型,但没有找到合适的解决方案,因为元类型存储在 [TestProtocol.Type] 类型的数组中。
【问题讨论】:
标签: swift polymorphism protocols metatype