首页 > 解决方案 > 如何在 Swift 中检查 SDK 中是否存在互斥方法?

问题描述

我的问题如下。我有一个依赖于 SDK 的库。我需要库以使用多个版本的 SDK。因此,在依赖 SDK 中,旧版本中有方法 A(withSuccess:EmptyBlock failure:errorBlock),新版本中有方法 A(withSuccess:SomeObjectBlock failure:errorBlock)。这显然意味着不能有 if respondsToSelector 调用,因为这些方法是互斥的,我的库将始终无法编译,因为其中一种方法不存在。我的问题是我能以某种方式通过字符串或类似的东西使用一些反射来实现这一点。解决方案最好使用 Swift。

标签: iosswift

解决方案


问题是您的代码(在这种情况下为库)直接依赖于外部依赖项(某些 SDK,您可能不拥有)。要解决此问题,您需要通过创建一个中间接口来消除这种依赖关系,您的代码可以依赖该接口并且 SDK 可以插入该接口,本质上是反转依赖关系。接口可以在可以与特定版本的外部 SDK 一起工作的特定实现之间进行选择(最好在编译时),从而使您能够编写尽可能多的接口实现并支持许多版本的 SDK。


推荐阅读