我们有一个静态框架,该框架取决于SDK。 当前,用户将添加我们的框架和依赖项SDK,并且一切正常。 SDK附带了具有新界面的新版本。
我们希望用户能够添加我们的框架以及旧的或新的SDK,并且我不确定如何在不创建多个我们不希望这样做的目标的情况下执行此操作。使用我设置的方式,用户必须添加我们的SDK以及新旧SDK。
我有一个协议SDKProtocol
,它由两个类NewSDKServices
和OldSDKServices
实现。
NewSDKServices
将不会编译,除非存在旧的SDK,否则OldSDKServices
将不会编译。我认为这是可行的,因为它是一个预编译的框架,我们可以在运行时决定使用哪个框架。
然后,我希望能够执行类似的操作,也许可以使用ifdef
来导入和初始化正确的服务。
if (useNewSDK) {
_sdkService = [[NewSDKServices alloc] init];
} else {
_sdkService = [[OldSDKServices alloc] init];
}
当我尝试使用我们的框架运行一个应用程序时,只有另一个SDK出现时,它失败并告诉我它正在找到未定义的符号。我曾考虑过使用反射NSClassFromString
,但我不想这样做。
两个SDK都有一些标头和一个.a
,我们将框架分发为.a