Swift 3.0协议实例化

Swift 3.0 Protocol instantiation

这是我对命令数组的声明 classes.

var commands: [IPICommand.Type] = [CLoginCommand.self]

IPICommand 是协议,CLoginCommand 是实现协议的 class。现在数组中只有一个元素,但可以有更多。

在此之后我想实例化数组的元素之一:

let aCommand = commands[0]()

当前实例化有问题:无法调用非函数类型的值'IPICommand.Type'

您正在尝试实例化一个 IPICommand 类型,这是一个协议。 为了让它工作,在你的协议声明

中定义一个init方法
protocol IPICommand {
    init()
}

这样你就可以做到commands[0]()。 我更喜欢用另一种方式命名 init,但这取决于你。