无法将“AProtocol”类型的值转换为预期参数类型协议

Ant*_*ine 0 macos swift swift-protocols

我正在尝试为 NSXPCInterface 构建一个协议,但遇到了一个奇怪的问题。

我创建了一个协议:

public protocol AProtocol {

    //functions in here

}
Run Code Online (Sandbox Code Playgroud)

当我想将其添加到 NSXPCConnection 的导出接口时,

let newConnection: NSXPCConnection
newConnection.exportedInterface = NSXPCInterface(with: AProtocol.self)
Run Code Online (Sandbox Code Playgroud)

我收到这个奇怪的错误:

Cannot convert value of type 'AProtocol.Protocol' to expected argument type 'Protocol'
Run Code Online (Sandbox Code Playgroud)

Kar*_*ose 5

我不知道原因,但尝试一下它的工作原理。添加@objc之前protocol

 @objc public protocol AProtocol {

//functions in here

}
Run Code Online (Sandbox Code Playgroud)

不要忘记初始化NSXPCConnection

编辑:从这里找到原因

“@objc”将协议公开给 Objective C 运行时,并允许我们将任何“协议类型”作为参数传递