在objective-c中,您始终可以通过其公共标头检查类的协议。但是如果你有一个swift课程,你怎么知道它符合什么协议?这甚至可能吗?
(是的,我知道Apple的文档列出了它符合的协议,但这似乎不是一个真正的解决方案,因为您可能正在使用私有框架或者有其他理论上的理由想要知道对象的协议。)
此外,是的,我知道您可以使用此处列出的技术检查特定协议:https://stackoverflow.com/a/37351027/18961
答案 0 :(得分:2)
在Xcode中,您可以命令单击任何Swift类型以获得其公共接口的类似标题的视图,包括在原始定义和扩展中添加的协议一致性。
这不显示定义库外的库添加的协议一致性,例如:如果您点击String
,则无法看到自己的extension String: MyFunkyProtocol
。但我认为它实际上是你正在寻找的类似头文件的东西。
对于Swift标准库,http://swiftdoc.org/是一个很好的参考。
答案 1 :(得分:1)
我不相信你可以不依靠Objective-C运行时来做到这一点。导入ObjectiveC
并使用class_copyProtocolList()
功能。