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.