Импорт 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, который вы используете для системных классов.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: