Sobes.tech
Junior — Middle

Կարո՞ղ եք Objective-C կոդը միացնել և օգտագործել Swift Package Manager-ի միջոցով։

sobes.tech AI

Պատասխան AI-ից

Swift Package Manager (SPM) սկզբնականում նախատեսված է աշխատելու Swift և C/C++ կոդի հետ: SPM-ում Objective-C-ի աջակցությունը սահմանափակ է և ոչ ուղղակի, քանի որ 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-ին: