这提供了一个 Encoder 和 Decoder 协议的实现,应该允许用户以 libxpc 为目标。 这仅在 macOS 上可用,因为 libxpc 在其他平台上不受支持。
用法非常简单,您的类型应该符合 Codable
、Decodable
或 Encodable
,具体取决于您需要的语义。 然后,您应该使用提供的 XPCEncoder.encode
和 XPCDecoder.decode
静态函数,分别将数据封送和解封送到 native xpc_object_t
和从 native xpc_object_t
封送和解封。 下面提供了一个简短的最小示例。
struct TestStruct {
let opinion = "XPC is awesome!"
}
let value = TestStruct()
let payload = try! XPCEncoder.encode(value)
let decoded = try! XPCDecoder.decode(payload)
assert(value == decoded)
但是,值得注意的是,此 API 不足以用 Swift 编写正确的 XPC 代码。 您需要提供正确的 xpc_main
并使用 SDK 提供的现有抽象来管理您的事务。 具体来说,此 API 不支持回复字典。
同样,此库仅旨在作为一种减少编写 Swift 类型封送代码的样板代码的方式,并且不能在没有 macOS SDK 提供的常用 libxpc API 的情况下使用。
此包仅使用 SwiftPM 分发。 据我所知,除了标准的 macOS SDK 之外,它没有任何依赖项,但是如果您发现任何依赖项,请告诉我。