Sobes.tech
Junior — Middle

Je možné pripojiť a používať kód Objective-C cez Swift Package Manager?

sobes.tech AI

Odpoveď od AI

Správca balíkov Swift (SPM) je pôvodne navrhnutý na prácu so kódom v jazyku Swift a C/C++. Podpora pre Objective-C v SPM je obmedzená a nie je priama, pretože SPM nedokáže automaticky vytvárať hlavičky mostu (bridging headers) pre Objective-C.

Avšak, je možné použiť Objective-C kód v balíku Swift, ak:

  • Balík obsahuje zdrojové súbory Objective-C (.m a .h).
  • V súbore Package.swift sú uvedené vhodné nastavenia na zahrnutie Objective-C súborov.
  • V kóde Swift sa používa modulárny import a Objective-C súbory sú správne exportované cez modul.

Príklad minimálnej konfigurácie Package.swift pre Objective-C:

// swift-tools-version:5.3
import PackageDescription

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

V priečinku Sources/MyPackage by mali byť Objective-C súbory a hlavičky v priečinku include.

Týmto spôsobom je možné pripojiť a používať Objective-C kód cez Swift Package Manager, avšak s obmedzeniami a doplnkovou konfiguráciou. Pre zložitejšie projekty sa často používajú CocoaPods alebo Carthage, ktoré lepšie podporujú Objective-C.