ios - 如何在 Swift 中检查 SDK 中是否存在互斥方法?
问题描述
我的问题如下。我有一个依赖于 SDK 的库。我需要库以使用多个版本的 SDK。因此,在依赖 SDK 中,旧版本中有方法 A(withSuccess:EmptyBlock failure:errorBlock),新版本中有方法 A(withSuccess:SomeObjectBlock failure:errorBlock)。这显然意味着不能有 if respondsToSelector 调用,因为这些方法是互斥的,我的库将始终无法编译,因为其中一种方法不存在。我的问题是我能以某种方式通过字符串或类似的东西使用一些反射来实现这一点。解决方案最好使用 Swift。
解决方案
问题是您的代码(在这种情况下为库)直接依赖于外部依赖项(某些 SDK,您可能不拥有)。要解决此问题,您需要通过创建一个中间接口来消除这种依赖关系,您的代码可以依赖该接口并且 SDK 可以插入该接口,本质上是反转依赖关系。接口可以在可以与特定版本的外部 SDK 一起工作的特定实现之间进行选择(最好在编译时),从而使您能够编写尽可能多的接口实现并支持许多版本的 SDK。
推荐阅读
- python - 根据特定值重命名多个熊猫 DataFrame 值
- electron - macOS 的 openVPN 连接应用程序 - 找不到开源
- c# - WCF HTTP 响应标头仅通过 SoapUI 可见
- javascript - 将数据从 Jquery 发送到 Django html 模板
- matrix - 在 Lisp 中的另一个矩阵中放置一个矩阵
- python - 处理字典列表中的重复项
- flutter - Dart Uri Api - 请求通过将 HTML 代码提供给问号来更改链接
- docker - 如何从 docker 容器(在服务器 1 中运行)连接数据库(服务器 2 中的 mongodb)
- javascript - 使用 GSAP 进行 CSS 和 JS 转换
- x86 - 我怎么知道我在某处有堆栈段错误?