首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将"AProtocol".Protocol类型的值转换为预期的参数类型协议

无法将"AProtocol".Protocol类型的值转换为预期的参数类型协议
EN

Stack Overflow用户
提问于 2018-09-29 12:32:28
回答 2查看 1.8K关注 0票数 0

我正试图为一个NSXPCInterface构建一个协议,我正面临着一个奇怪的问题。

我创建了一个协议:

代码语言:javascript
复制
public protocol AProtocol {

    //functions in here

}

当我想把它添加到exportedInterface of NSXPCConnection,

代码语言:javascript
复制
let newConnection: NSXPCConnection
newConnection.exportedInterface = NSXPCInterface(with: AProtocol.self)

我发现了一个奇怪的错误:

代码语言:javascript
复制
Cannot convert value of type 'AProtocol.Protocol' to expected argument type 'Protocol'
EN

回答 2

Stack Overflow用户

发布于 2018-09-29 12:52:42

我不知道原因,但它的作用,试试这个。在@objc之前添加protocol

代码语言:javascript
复制
 @objc public protocol AProtocol {

//functions in here

}

不要忘记初始化NSXPCConnection

编辑:从这里中找到原因

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

票数 5
EN

Stack Overflow用户

发布于 2018-09-29 12:59:57

您传递给NSXPCInterface实例的协议必须是文档中描述的目标-C协议。

协议:这个接口所基于的目标-C协议.

所以你要做的就是用@objc标记@objc

代码语言:javascript
复制
@objc public protocol AProtocol {
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52568409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档