У нас есть статическая структура, которую мы создали, и она зависит от 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, оно выходит из строя и сообщает мне, что оно находит неопределенные символы. Я думал об использовании отражения NSClassFromString
, но я бы предпочел не делать этого.
Оба SDK имеют несколько заголовков и .a
, и мы распространяем нашу инфраструктуру как .a