2016-11-28 3 views
1

다음은 명령 클래스 배열에 대한 선언입니다.Swift 3.0 프로토콜 인스턴스화

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

IPICommand는 프로토콜이며, CLoginCommand 프로토콜을 구현하는 클래스입니다. 이제 배열에는 하나의 요소 만 있지만 더 많은 요소가있을 수 있습니다.

let aCommand = commands[0]() 

현재 인스턴스가 문제가 있습니다 : 'IPICommand.Type'

답변

1

당신이 아닌 함수 타입의 값을 호출 할 수 없습니다

이후 나는 배열의 요소 중 하나의 인스턴스를하고 싶습니다 프로토콜 인 IPICommand 유형을 인스턴스화하려고합니다. , 그것은 작동하는지 확인 당신이 commands[0]()을 할 수있는 이런 방식으로 프로토콜 선언

protocol IPICommand { 
    init() 
} 

init 방법을 정의합니다. 다른 방법으로 init의 이름을 지정하는 것이 좋지만, 이는 사용자의 책임입니다.

+0

네 말이 맞아. 'commands [0]()'는 작동하지 않지만'commands [0] .init()'는 작동하지만 약간의 차이가 있습니다. –