შეგიძლიათ 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-ს.