И код Swift, и C/Objective-C используют API и типы IOKit.
Проблема, с которой я столкнулся, заключается в том, что IOKit не является модульным в iPadOS, и таким образом, его нельзя импортировать непосредственно в Swift, ни в стандартной структуре определения модуля. В цели приложения (а не в цели платформы) это можно обойти, импортировав в заголовок моста. Эквивалентом этого в фреймворке может быть импорт IOKit в зонтичный заголовок, который фактически служит связующим заголовком в фреймворке. Однако это вызывает ошибку «включение немодульного заголовка в модуль фреймворка...».
Моей первой мыслью было включить настройку сборки CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES. Включение этого параметра не приводит к исчезновению ошибки.
Моей следующей мыслью было отключить параметр DEFINES_MODULE, но это имело два ломающих эффекта:
- Фреймворк невозможно импортировать в код Swift (например, в приложение), поскольку он больше не определяет модуль.
- Фреймворк все еще не компилируется, поскольку собственный код Swift фреймворка больше не компилируется. видит любой из мостовых типов, импортированных в зонтичный заголовок.
Подробнее здесь: https://stackoverflow.com/questions/780 ... -framework
Мобильная версия