我们已经构建了一个静态框架,它依赖于我们用来访问 ID 的 SDK。该 SDK 推出了具有新界面的新版本。
目前,用户将添加我们的框架和依赖 SDK,一切都会正常工作。现在我们希望用户能够添加我们的框架以及旧的或新的 SDK,我不确定如何在不创建多个目标的情况下做到这一点,而我们不想这样做。通过我设置它的方式,用户必须添加我们的 SDK 以及新旧 SDK。
我有一个SDKProtocol
由两个类NewSDKServices
和OldSDKServices
.
NewSDKServices
除非存在新 SDK,OldSDKServices
否则不会编译,除非存在旧 SDK,否则不会编译。我认为这没关系,因为它是一个预编译的框架,我们可以在运行时决定使用哪个。
然后我希望能够做这样的事情,也许ifdef
可以导入和初始化正确的服务。
if (useNewSDK) {
_sdkService = [[NewSDKServices alloc] init];
} else {
_sdkService = [[OldSDKServices alloc] init];
}
我考虑过弱链接这些库,但不确定它是如何工作的,因为你不能将框架静态链接到其他静态框架。我希望有一个方向。
两个 SDK 都有一些标头和一个.a
.