gpt4 book ai didi

ios - 是否可以对 Swift 协议(protocol)进行哈希处理?

转载 作者:行者123 更新时间:2023-11-29 01:52:07 26 4
gpt4 key购买 nike

我正在尝试用 Swift 编写一个注册表,将 API(协议(protocol))映射到实现(类)。我希望能够向注册表提供 API 并接收实现它的类的实例。在 Objective-C 中,这是相当简单的 - 只需在协议(protocol)上调用 NSStringFromProtocol ,然后将其用作包含实现它们的类的字典的键。然而,在 Swift 中,我们不具备这种内省(introspection)能力。当我尝试执行相同操作时,我被告知 MyAPI.protocol 没有成员“mirrorType”。我向您提出的问题是,在 Swift 中,如何在不使用 @objc 协议(protocol)的情况下从协议(protocol)本身映射到实现它的类。谢谢!

最佳答案

到目前为止,不使用 @objc 是不可能的。我在这种情况下找到的解决方案是使用协议(protocol)名称(字符串)作为此实现的字典的键(在我的例子中,我总是每个协议(protocol)只有一个实例)。

使用@objc 将强制您让所有实现返回 AnyObject 与 objective-C 中的等效 (id)(如果您的函数不返回 native objective-C 类型)。

希望对您有所帮助。

关于ios - 是否可以对 Swift 协议(protocol)进行哈希处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31285339/

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