Static Framework Необязательные зависимости iOS - PullRequest
0 голосов
/ 28 июня 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...