gpt4 book ai didi

swift - NSSecureCoding 实现类必须在共享框架中才能与 XPC 一起工作吗?

转载 作者:行者123 更新时间:2023-11-28 06:01:13 25 4
gpt4 key购买 nike

在关注 Creating XPC Services guide 时在 Swift 中并尝试传递自定义 Foo 类,我发现为了使其正常工作,它必须位于动态库中。当它嵌入到两个目标时,与服务的连接失败并返回 4097 代码。如果 Foo 在静态库中,也会发生同样的情况。

我似乎无法提及此要求,并猜测这是由于安全性在解码时将它们识别为不同的对象。这是真的?关于这个有更具体的信息吗?

最佳答案

问题出在 Swift 名称修改上,这会导致不同目标中的类名称不同,因此当 XPC 解码器尝试安全地解码接收到的对象时,它会看到与指定不同的类名称并失败。

obj.io XPC example编译 Swift @objc class Foo: NSObject, NSSecureCoding应用程序和服务目标中的类有 @class Foo : NSObject<NSSecureCoding>@class _TtC15ImageDownloader3Foo : NSObject<NSSecureCoding>分别签名。

为避免这种情况,只需在 @objc(Foo) 中添加明确的 Objective-C 名称即可标签,这将产生相同的 @class Foo : NSObject<NSSecureCoding>两个目标中的类签名。

关于swift - NSSecureCoding 实现类必须在共享框架中才能与 XPC 一起工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49664616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com