Невозможно преобразовать значение типа "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 {
}