Sobes.tech
Junior — Middle

Kun je Objective-C-code verbinden en gebruiken via Swift Package Manager?

sobes.tech AI

Antwoord van AI

Swift Package Manager (SPM) is oorspronkelijk ontworpen om te werken met Swift- en C/C++-code. Ondersteuning voor Objective-C in SPM is beperkt en niet direct, omdat SPM niet automatisch bridging headers voor Objective-C kan maken.

Echter, je kunt Objective-C-code gebruiken in een Swift Package als:

  • De package Objective-C bronbestanden bevat (.m en .h).
  • In Package.swift de juiste instellingen zijn gespecificeerd om Objective-C-bestanden op te nemen.
  • In Swift-code modulair geïmporteerd wordt en de Objective-C-bestanden correct worden geëxporteerd via de module.

Voorbeeld van minimale configuratie van Package.swift voor Objective-C:

// swift-tools-version:5.3
import PackageDescription

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

In de map Sources/MyPackage moeten Objective-C-bestanden en headers in de map include staan.

Zo kan Objective-C-code worden gekoppeld en gebruikt via Swift Package Manager, maar met beperkingen en extra configuratie. Voor complexere projecten worden vaak CocoaPods of Carthage gebruikt, die betere ondersteuning bieden voor Objective-C.