DevPrep

Все темы › Среды разработки и SDK

Менеджеры зависимостей: CocoaPods, SPM, Carthage?

Middle PRO

Swift Package Manager (стандарт)

Официальный инструмент Apple и Swift, встроен в Xcode и в toolchain (swift build). Зависимости описываются в Package.swift (манифест на Swift), точные версии фиксируются в Package.resolved — его коммитят. Xcode добавляет ссылки на пакеты в project.pbxproj, но не генерирует workspace и не требует внешних инструментов. Возможности: исходные и binary targets (XCFramework), ресурсы (Bundle.module), build-плагины и command-плагины (SwiftLint, генерация кода), package traits (Swift 6.1) для условной компиляции фич, локальные пакеты для модуляризации приложения. Линковка по умолчанию статическая.

// swift-tools-version: 6.0
import PackageDescription

let package = Package(
    name: "Networking",
    platforms: [.iOS(.v17)],
    products: [
        .library(name: "Networking", targets: ["Networking"])
    ],
    dependencies: [
        .package(url: "https://github.com/apple/swift-log.git",
                 from: "1.6.0")
    ],
    targets: [
        .target(
            name: "Networking",
            dependencies: [.product(name: "Logging", package: "swift-log")],
            swiftSettings: [.swiftLanguageMode(.v6)]
        ),
        .testTarget(name: "NetworkingTests", dependencies: ["Networking"])
    ]
)

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store