通过将init函数中接受的参数类型更改为
CustomItem.Type
以及更改传递给的值
FirstItem.self
这很管用。例如,将代码更改为以下内容应该可以。
protocol CustomItem {
static func instantiate() -> CustomItem
}
class FirstItem: CustomItem {
static func instantiate() -> CustomItem {
return FirstItem()
}
}
class SecondItem: CustomItem {
static func instantiate() -> CustomItem {
return SecondItem()
}
}
class Manager {
var itemClass: CustomItem.Type
func createItem() {
let itemInstance = itemClass.instantiate()
}
init(itemClass: CustomItem.Type) {
self.itemClass = itemClass
}
}
let manager = Manager(itemClass: FirstItem.self)