Рубріки: Теория

Импорт Objective-C в Swift: краткая, но ясная инструкция

Игорь Грегорченко

В этой короткой заметке обсудим доступ к классам, объектам и другим объявлениями из кода Objective-C в Swift.

Обзор

Вы можете использовать файлы Objective-C и Swift вместе в одном проекте, независимо от того, какой язык использовался в проекте изначально.

Это делает создание приложений и фреймворков на смешанных языках таким же простым делом, как и создание приложений или фреймворков, написанных на одном языке.

Диаграмма, показывающая шаги по импорту деклараций Objective-C в код Swift. Импортируйте заголовки Objective-C в мостовой заголовочный файл Objective-C, чтобы открыть декларации для всех файлов Swift.

Процесс использования деклараций Objective-C из кода Swift в смешанных языках немного отличается в зависимости от того, пишете ли вы приложение или фреймворк. Оба процесса описаны ниже.

Импорт кода внутри приложения

Чтобы импортировать набор файлов Objective-C в код Swift в рамках одной и той же цели сборки приложения, вы полагаетесь на заголовочный файл Objective-C bridging header, чтобы открыть эти файлы для Swift.

Xcode предлагает создать подобный заголовок, когда вы добавляете файл Swift в существующее приложение Objective-C, либо файл Objective-C в существующее приложение Swift.

Скриншот приглашения Xcode для настройки мостового заголовка Objective-C.

Если вы соглашаетесь, Xcode создает файл связующего заголовка вместе с файлом, который вы создавали, и называет его с помощью имени вашего модуля продукта, за которым следует -Bridging-Header.h.

В качестве альтернативы, вы можете создать заголовок самостоятельно, выбрав File > New > File > [операционная система] > Source > Header File.

Отредактируйте связующий заголовок, чтобы открыть код Objective-C для кода Swift:

  • Импортируйте в свой связующий заголовок Objective-C все заголовки Objective-C, которые вы хотите передать в Swift.
  • В Build Settings, в Swift Compiler -> General, убедитесь, что в параметре сборки Objective-C Bridging Header указан путь к файлу связующего заголовка. Путь должен быть относительным к вашему проекту, подобно тому, как в Build Settings указывается путь к Info.plist. В большинстве случаев вам не потребуется изменять этот параметр.

Любые публичные заголовки Objective-C, перечисленные в мостовом заголовке, видны Swift. Декларации Objective-C автоматически доступны из любого файла Swift внутри этой цели сборки, без операторов импорта.

Используйте классы/объекты и другие объявления из вашего пользовательского кода Objective-C с тем же синтаксисом Swift, который вы используете для системных классов.

Импорт кода внутри Framework

Чтобы использовать объявления Objective-C в файлах в той же цели фреймворка, что и ваш Swift-код, настройте зонтичный заголовок следующим образом:

  • В разделе Build Settings, в Packaging, убедитесь, что параметр Defines Module для цели фреймворка установлен на Yes.
  • В зонтичном заголовке импортируйте все заголовки Objective-C, которые вы хотите раскрыть для Swift.

Swift видит каждый заголовок, который вы открыто раскрываете в зонтичном заголовке. Содержимое файлов Objective-C в этом фреймворке автоматически доступно из любого файла Swift внутри этого фреймворка, без каких-либо операторов импорта.

Используйте классы и другие объявления из вашего кода Objective-C с тем же синтаксисом Swift, который вы используете для системных классов.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023