4

我有一个用 Swift 编写的应用程序,专门用 Swift 编写,从来没有 Obj-C 类,没有 Obj-C 文件或桥接头。

为了在不影响我的应用程序权利的情况下添加一些功能,我正在尝试添加一个 XPC 服务——我在 Xcode 中创建了它,而 Xcode 中 XPC 服务的模板仅是 Obj-C。

这很好,我在 Obj-C 中编写了我的服务,但是现在当我想通过我的服务调用我的服务时,NSXPCConnection我必须设置它的接口,为此我需要在我的 Swift 应用程序代码中引用,我为我的 XPC 目标编写的 Obj-C 协议。

我该怎么做呢?我不能只将“Protocol.h”添加到我的应用程序目标中,它没有 C 标头的规则。我发现的所有其他评论似乎只适用于链接到框架中的协议或共同目标......

4

2 回答 2

4

好的,所以我想出了一个解决方案。

1) 删除了样板 Obj-C 服务类和协议文件。

2) 快速编写我的协议并出售对象类。确保这些可以导出到 Obj-C。

3) 将 protocol.swift 文件添加到我的应用程序的目标中。添加#import "Service-Swift.h"到我的服务中main.m

所以现在我的 XPC 对象是用 Swift 实现的,我的对象协议是 swift 的,唯一的非 swift 文件是我的 XPC 的主文件。

于 2015-09-09T20:02:52.267 回答
0

据我了解,您甚至可以更改主文件。 https://www.objc.io/issues/14-mac/xpc/

于 2016-10-12T12:18:19.670 回答