我正在尝试为NSXPCInterface建立协议,但遇到了一个奇怪的问题。
我创建了一个协议:
public protocol AProtocol {
//functions in here
}
,当我要将其添加到NSXPCConnection的exportedInterface时,
let newConnection: NSXPCConnection
newConnection.exportedInterface = NSXPCInterface(with: AProtocol.self)
我收到这个奇怪的错误:
Cannot convert value of type 'AProtocol.Protocol' to expected argument type 'Protocol'
答案 0 :(得分:1)
我不知道原因,但可以尝试此操作。在@objc
之前添加protocol
@objc public protocol AProtocol {
//functions in here
}
不要忘记初始化NSXPCConnection
修改:从here
中找到了原因“ @ objc”将协议公开给目标c运行时,并允许我们传递任何“协议类型”作为参数
答案 1 :(得分:0)
您传递给NSXPCInterface
实例的协议必须是documentation中所述的Objective-C协议:
协议:此接口基于的Objective-C协议。
因此,您要做的就是在AProtocol
上标记@objc
@objc public protocol AProtocol {
}