Невозможно преобразовать значение типа "AProtocol".Protocol в ожидаемый аргумент типа Protocol

Я пытаюсь создать протокол для 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 ответа

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

 @objc public protocol AProtocol {

//functions in here

}

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

Изменить: найденная причина отсюда

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

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

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

Так что все, что вам нужно сделать, это пометить AProtocol с @objc

@objc public protocol AProtocol {
}
Другие вопросы по тегам