У нас есть статическая структура, которую мы создали, и она зависит от 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
.