Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от AI

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

Въпреки това, може да се използва Objective-C код в Swift пакет, ако:

  • Пакетът съдържа изходни файлове 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.