Невозможно преобразовать значение типа «AProtocol» .Protocol в ожидаемый аргумент типа Protocol - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь создать протокол для NSXPCInterface и сталкиваюсь со странной проблемой.

Я создал протокол:

public protocol AProtocol {

    //functions in here

}

и когда я хочу добавить егок exportedInterface NSXPCConnection,

let newConnection: NSXPCConnection
newConnection.exportedInterface = NSXPCInterface(with: AProtocol.self)

Я получаю эту странную ошибку:

Cannot convert value of type 'AProtocol.Protocol' to expected argument type 'Protocol'

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Протокол, который вы передаете экземпляру NSXPCInterface, должен быть протоколом Objective-C, как описано в документации :

: протокол Objective-Cна котором основан этот интерфейс

0 голосов
/ 29 сентября 2018

Я не знаю причину, но это работает, попробуйте это.Добавить @objc перед protocol

 @objc public protocol AProtocol {

//functions in here

}

не забудьте инициализировать NSXPCConnection

Редактировать : найдена причина из здесь

"@ objc", который выставляет протокол в целевую среду выполнения c и позволяет нам передавать любой "Тип протокола" в качестве параметра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...