#ios #swift #objective-c
Вопрос:
У меня есть приложение для iOS, написанное на Swift, которое должно работать на iOS 13 и более поздних версиях.
Проблема:
- У меня есть две платформы, одна из которых присутствует только в iOS 13 SDK, а другая — только в iOS 14 SDK
- Для каждой платформы мне нужно реализовать расширение для выполнения определенной задачи
Вопрос:
- Как я могу выборочно импортировать правильную платформу в зависимости от того, работает ли она на iOS 13 или iOS 14? Я изучил
@available
,canImport
,#if defined
, но никто не делает то, что я описал выше - Как я могу реализовать расширения так, чтобы использовалось правильное расширение, а компилятор не кричал на меня?
Комментарии:
1. Импорт кодируется в двоичный код во время сборки, но загрузка динамической библиотеки происходит во время выполнения. Вы хотите сказать, что хотите выборочно загружать разные фреймворки во время выполнения?
2. Ну, я не уверен, возможно ли это, но конечная цель состоит в том, чтобы иметь один файл Swift, содержащий инструкции импорта для обеих платформ (возможно, используя фильтр времени компиляции, такой как @available, тоже выберите, какую инструкцию импорта выполнить).
3. И этот файл Swift также будет иметь реализации расширений для обеих платформ, но также будет отфильтрован во время компиляции в зависимости от версии iOS
4. Это может помочь вам выборочно загружать фреймворки и символы из ваших фреймворков во время выполнения github.com/facebook/facebook-ios-sdk/blob/…