Я пытаюсь использовать стороннюю библиотеку Objective-C в моем проекте Swift. У меня есть библиотека, успешно импортированная в Xcode, и я создал файл <Project>-Bridging-Header.h
, который позволяет мне использовать классы Objective-C в Swift.
Кажется, что я столкнулся с одной проблемой: код Objective-C содержит файл Constants.h
с макросом #define AD_SIZE CGSizeMake(320, 50)
. Импорт Constants.h
в мой <Project>-Bridging-Header.h
не приводит к глобальной константе AD_SIZE
, которую может использовать мое приложение Swift.
Я провел некоторое исследование и увидел, что документация Apple здесь в разделе "Комплексные макросы" говорит, что
"В Swift вы можете использовать функции и дженерики для достижения того же результаты [как сложные макросы] без каких-либо компромиссов. Следовательно сложные макросы, которые находятся в C и Objective-C исходных файлах не созданы доступный для вашего кода Swift."
После прочтения этого, я получил его, чтобы он работал нормально, указав let AD_SIZE = CGSizeMake(320, 50)
в Swift, но я хочу поддерживать будущую совместимость с библиотекой в случае изменения этих значений без меня.
Есть ли легкое исправление для этого в Swift или мой заголовок? Если нет, есть ли способ заменить #define AD_SIZE CGSizeMake(320, 50)
в Constants.h
и сохранить что-то обратно совместимым с любыми существующими приложениями Objective-C, которые используют старый макрос AD_SIZE
?