Подтвердить что ты не робот

Swift: как я могу создать внешний интерфейс для статической библиотеки (аналог публичных заголовков в Objective-C.h)

Мне нужно создать статическую библиотеку с Swift, и мне нужно знать, как я могу реализовать интерфейс для библиотеки.

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

Что делать с Swift?

4b9b3361

Ответ 1

Проще говоря: вы этого не делаете.

Swift - это не язык, который отделяет заголовки и реализации. Когда вы создаете библиотеку или фреймворк на основе Swift и только для потребления Swift, настройка сборки по умолчанию для Xcode DEFINES_MODULE уже выполняет эту работу для вас. Это создаст файл .swiftmodule, который будет использоваться import в других проектах Swift.

Если вы хотите, чтобы ваш код был импортирован из Objective-C, хотя вы можете проверить, включен ли параметр сборки SWIFT_INSTALL_OBJC_HEADER (который по умолчанию для фреймворков, насколько я знаю). Затем компилятор Swift сгенерирует для вас файл <ProductName>-Swift.h, который вы можете импортировать в код Objective-C для доступа к вашим классам и функциям Swift.

Ответ 2

Если вы хотите, чтобы ваша инфраструктура Swift открывала определенные классы для интерфейса, просто пометьте "сущности" (функции, переменные и т.д.) public:

public class Class {}
public var variable: Int
public func function() { }

По умолчанию все объекты имеют доступ к internal.

  • public объекты предназначены для использования в качестве API и могут быть доступны любым файлом, который импортирует модуль, например. в качестве основы, используемой в нескольких ваших проектах. Объекты
  • internal доступны для всего модуля, который включает определение (например, приложение или целевая платформа).
  • private объекты доступны только из исходного файла, где они определены.

Источник: официальный блог Swift.