Sobes.tech
Junior — Middle

Ar galima prijungti ir naudoti Objective-C kodą per Swift Package Manager?

sobes.tech AI

Atsakymas iš AI

Swift Package Manager (SPM) iš pradžių skirtas dirbti su Swift ir C/C++ kodu. SPM parama Objective-C yra ribota ir ne tiesioginė, nes SPM negali automatiškai kurti bridging headers (perėjimo antraščių) Objective-C.

Tačiau, Objective-C kodą galima naudoti Swift pakete, jei:

  • Paketas turi Objective-C šaltinio failus (.m ir .h).
  • Package.swift nurodo tinkamas nuostatas Objective-C failų įtraukimui.
  • Swift kode naudojamas modulinis importas, o Objective-C failai teisingai eksportuojami per modulį.

Minimalios konfigūracijos pavyzdys — 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 kataloge turi būti Objective-C failai ir antraščių failai kataloge include.

Šiuo būdu, Objective-C kodas gali būti prijungtas ir naudojamas per Swift Package Manager, tačiau su apribojimais ir papildoma konfigūracija. Didesniems projektams dažnai naudojami CocoaPods ar Carthage, kurie geriau palaiko Objective-C.