Sobes.tech
Назад к вопросам
Junior — Middle
69

Можно ли подключать и использовать код на Objective-C через Swift Package Manager?

Компании, где спрашивали
Мидлэнд

Ответ от нейросети

sobes.tech AI

Swift Package Manager (SPM) изначально ориентирован на работу с кодом на Swift и C/C++. Поддержка Objective-C в SPM ограничена и не является прямой, так как SPM не умеет автоматически создавать заголовочные мосты (bridging headers) для Objective-C.

Тем не менее, можно использовать Objective-C код в Swift Package, если:

  • В пакете есть исходники Objective-C (.m и .h файлы).
  • В Package.swift указаны соответствующие настройки для включения Objective-C файлов.
  • В Swift коде используется модульный импорт, а Objective-C файлы правильно экспортируются через модуль.

Пример минимальной настройки Package.swift для Objective-C:

// swift-tools-version:5.3
import PackageDescription

let package = Package(
    name: "MyPackage",
    targets: [
        .target(
            name: "MyPackage",
            dependencies: [],
            path: "Sources",
            publicHeadersPath: "include"
        )
    ]
)

В папке Sources/MyPackage должны быть Objective-C файлы и заголовки в папке include.

Таким образом, подключать и использовать Objective-C код через Swift Package Manager можно, но с ограничениями и дополнительной настройкой. Для более сложных проектов часто используют CocoaPods или Carthage, которые лучше поддерживают Objective-C.