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-ს.