iOS Deployment Target: Was ist das, minimale iOS-Version und Konfiguration

Autor: IT Sectr Veröffentlicht: 2026-02-08 Lesezeit: 14 Min.

iOS Deployment Target (auch iOS Target, Deployment Target) ist die Mindestversion des Apple-Betriebssystems, auf dem eine Anwendung ausgeführt werden kann. Dieser Parameter wird im Xcode-Projekt festgelegt und definiert die Kompatibilitätsgrenze: Bei Auswahl von iOS 16.0 wird die Anwendung nur auf Geräten mit iOS 16.0 und neuer installiert. Laut Apple Developer Documentation beeinflusst die Wahl des richtigen Deployment Targets sowohl die Reichweite der Zielgruppe als auch den Zugriff auf neue APIs von Swift- und Objective-C-Frameworks.

Wichtige Punkte

  • iOS Deployment Target — die Mindestversion von iOS zum Installieren und Ausführen einer Anwendung, das vollständige Äquivalent von minSdkVersion für Android
  • Konfiguration in Xcode: Project → Info → iOS Deployment Target, auch in Swift Package Manager und CocoaPods
  • @available und #available — Swift-Mechanismen zum sicheren Aufrufen von APIs oberhalb des aktuellen Deployment Targets
  • Jedes neue Deployment Target bietet Zugriff auf neue SwiftUI-, UIKit-, Foundation- und AppKit-APIs, reduziert jedoch die Geräteabdeckung
  • App Store filtert Anwendungen nach der iOS-Version des Geräts — bei Nichtübereinstimmung mit dem Deployment Target wird die Anwendung nicht angezeigt

Was ist iOS Deployment Target?

iOS Deployment Target ist ein Xcode-Konfigurationsparameter, der die früheste Version von iOS, iPadOS, tvOS, watchOS oder visionOS angibt, auf der eine Anwendung ausgeführt werden kann. Jedes Xcode-Projekt enthält diese Einstellung für jede Plattform separat. Zum Beispiel kann eine iOS-App das Deployment Target 16.0 haben, während eine watchOS-Erweiterung 9.0 hat. Wenn das Gerät des Benutzers iOS 15.0 ausführt, wird eine App mit Target 16.0 nicht im App Store angezeigt und kann nicht über direkte Verteilung installiert werden.

Der Mechanismus des Deployment Targets basiert auf der Überprüfung der OS-Version während der Installation. Der iOS App Store vergleicht den Deployment Target-Wert aus der Info.plist (Schlüssel MinimumOSVersion) mit der OS-Version auf dem Gerät des Benutzers. Wenn die Geräteversion niedriger ist — wird der "Download"-Button blockiert und die App Store API gibt die Anwendung nicht in den Suchergebnissen für dieses Gerät zurück. Das gleiche Verhalten gilt für TestFlight, Ad-hoc- und Enterprise-Verteilung.

Laut StatCounter-Daten vom Juni 2025 macht iOS 16 etwa 48 % der aktiven iPhone-Geräte aus, iOS 17 — 35 %, iOS 18 — 12 %, ältere Versionen — etwa 5 %. Die Wahl von Deployment Target 16.0 deckt 83 % der Geräte ab, Target 17.0 — 35 % (nur iOS 17+). Diese Zahlen sind entscheidend für die Entscheidungsfindung: Je höher das Target, desto kleiner die Zielgruppe, aber desto zugänglicher sind die neuesten SwiftUI- und UIKit-APIs.

Deployment TargetGeräteanteil (Juni 2025)Verfügbare Funktionen
iOS 15.0~90%Swift Concurrency, async/await, Focus State
iOS 16.0~83%SwiftUI NavigationStack, Layout, Live Activities
iOS 17.0~35%Observation, SwiftData, TipKit, Reactive Editing
iOS 18.0~12%Neue Apple Intelligence APIs, verbessertes SwiftUI

Jede neue iOS-Version fügt nicht nur Benutzerfunktionen hinzu, sondern auch APIs für Entwickler. Neue SwiftUI-Modifikatoren, UIKit-Methoden, Frameworks wie SwiftData und Observation sind nur bei einem bestimmten Deployment Target verfügbar. Der Entwickler muss zwischen der Reichweite der Zielgruppe und der Verfügbarkeit moderner Werkzeuge abwägen.

iOS Deployment Target vs minSdkVersion: Vergleich mit Android

iOS Deployment Target und minSdkVersion von Android erfüllen die gleiche Funktion — sie legen die Mindestversion des Betriebssystems für eine Anwendung fest. Die Implementierungsmechanismen und zugehörigen Werkzeuge unterscheiden sich jedoch. Das Verständnis dieser Unterschiede ist für Entwickler, die auf beiden Plattformen arbeiten, nützlich und hilft, Verwirrung beim Wechsel zwischen Ökosystemen zu vermeiden.

In iOS wird die Mindestversion über die Xcode-Buildeinstellungen (IPHONEOS_DEPLOYMENT_TARGET) festgelegt und in der Info.plist (MinimumOSVersion) gespeichert. In Android — über build.gradle (minSdkVersion) und AndroidManifest.xml (<uses-sdk android:minSdkVersion>). iOS hat keine Entsprechungen zu targetSdkVersion und compileSdkVersion — Verhaltensänderungen in iOS werden durch das SDK verwaltet, mit dem die Anwendung kompiliert wurde (Base SDK), und die OS-Version auf dem Gerät.

ParameteriOSAndroid
MindestversionDeployment Target (IPHONEOS_DEPLOYMENT_TARGET)minSdkVersion
Wo angegebenXcode Build Settings → Info.plistbuild.gradle → AndroidManifest.xml
Code-Prüfung@available / #available / if #availableBuild.VERSION.SDK_INT
ZielversionBase SDK (immer die neueste)compileSdkVersion + targetSdkVersion
Store-FilterungApp Store: MinimumOSVersionGoogle Play: minSdkVersion

Der Hauptunterschied besteht darin, dass Base SDK in iOS immer die neueste in Xcode installierte Version ist. Der Entwickler kann nicht wie in Android compileSdkVersion wählen — die Anwendung wird immer gegen das neueste verfügbare SDK kompiliert. Neue Verhaltensänderungen in iOS gelten für alle Anwendungen, die mit dem neuen Base SDK kompiliert wurden, unabhängig vom Deployment Target. In Android bietet targetSdkVersion Kontrolle über Verhaltensänderungen; iOS hat diese Trennung nicht.

Verhaltensänderungen in iOS vs Android

Im Gegensatz zu Android, wo Verhaltensänderungen an targetSdkVersion gebunden sind, wendet iOS Verhaltensänderungen auf alle Anwendungen an, die mit der neuen Version von Xcode und Base SDK kompiliert wurden. Beispielsweise führte iOS 13 den Dunkelmodus ein — alle mit Xcode 11 und iOS 13 SDK erstellten Anwendungen erhielten automatisch Unterstützung für das dunkle Design, unabhängig vom Deployment Target. In Android gilt eine ähnliche Änderung (Scoped Storage) nur, wenn targetSdk >= 29 ist. iOS-Entwickler müssen ohne Aufschubmöglichkeit mit Verhaltensänderungen bei jedem neuen Xcode rechnen.

Kenntnisse beider Plattformen ermöglichen es, die Folgen der Wahl einer Mindestversion vorherzusagen und Code-Updates für neue APIs zu planen. Bei IT Sectr verwenden wir seit 2017 beide Ökosysteme — die Praxis zeigt, dass das iOS Deployment Target 2–3 Versionen unter der aktuellen gewählt werden sollte, um ein Gleichgewicht zwischen Abdeckung und Funktionalität zu erreichen.

So konfigurieren Sie das Deployment Target in Xcode

Die Konfiguration des iOS Deployment Targets erfolgt an mehreren Stellen im Projekt: dem Haupt-Target, dem Pods-Projekt (bei Verwendung von CocoaPods), Swift Package Manager-Abhängigkeiten und Widget/Extension-Targets. Wenn die Werte zwischen der Hauptanwendung und Erweiterungen abweichen, verwendet der App Store den maximalen aller Werte — das heißt, eine Erweiterung kann kein niedrigeres Target haben als die Hauptanwendung.

Konfiguration im Xcode-Projekteditor

Öffnen Sie das Xcode-Projekt → wählen Sie das Target → Registerkarte General → Abschnitt Minimum iOS Deployment. Die Dropdown-Liste zeigt alle verfügbaren, in Xcode installierten iOS SDK-Versionen. Die Änderung gilt für alle Build-Schemata. Alternativ — Registerkarte Build Settings → iOS Deployment Target (IPHONEOS_DEPLOYMENT_TARGET). Wenn das Projekt mehrere Target-Erweiterungen (Widget, Watch) enthält, hat jede ihr eigenes Deployment Target.

Konfiguration über Swift Package Manager

Für Bibliotheken, die über SPM verteilt werden, wird das Deployment Target in Package.swift im Parameter platforms angegeben. Eine Bibliothek mit platforms: [.iOS(.v16)] ist nur für Anwendungen mit Deployment Target iOS 16.0+ verfügbar. Beim Hinzufügen einer solchen Bibliothek zu einem Projekt mit Target 15.0 zeigt Xcode einen Kompatibilitätsfehler an. In CocoaPods wird das Deployment Target im Podfile festgelegt: platform :ios, '16.0'.

swift
// Package.swift — Deployment Target für SPM-Bibliothek
import PackageDescription

let package = Package(
    name: "MyLibrary",
    platforms: [
        .iOS(.v16),
        .macOS(.v13),
        .watchOS(.v9),
        .tvOS(.v16)
    ],
    products: [
        .library(
            name: "MyLibrary",
            targets: ["MyLibrary"]
        )
    ],
    dependencies: [],
    targets: [
        .target(
            name: "MyLibrary",
            swiftSettings: [
                .enableUpcomingFeature("ConciseMagicFile")
            ]
        )
    ]
)

// Kompatibilitätsprüfung im Code
#if swift(>=5.9)
// Swift 5.9+ Funktionen (Xcode 15+)
#endif

Im Beispiel setzt Package.swift die Plattformen iOS 16+, macOS 13+, watchOS 9+, tvOS 16+. Jedes Projekt mit einem Deployment Target unter iOS 16.0 kann diese Bibliothek nicht hinzufügen. Der Parameter swiftSettings enthält bevorstehende Funktionen für eine bestimmte Swift-Version. SPM überprüft automatisch die Kompatibilität der Plattformen beim Hinzufügen einer Abhängigkeit.

CocoaPods und Podfile

Das Podfile verwendet die Direktive platform :ios, '16.0'. Nach pod install überprüft CocoaPods das Deployment Target jeder Pod-Bibliothek: Wenn mindestens eine ein höheres Target als das Projekt hat, schlägt die Installation mit dem Fehler fehl "The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 17.0, but the range of supported deployment target versions is 16.0 to 17.0". Die Lösung besteht darin, das Target des problematischen Pods zu senken oder das Target des Projekts zu erhöhen.

ruby
# Podfile — Beispiel mit Deployment Target
platform :ios, '16.0'

# Deployment Target-Warnungen ignorieren
post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0'
        end
    end
end

Der post_install-Hook im Podfile setzt für alle Pod-Bibliotheken zwangsweise das Deployment Target 16.0. Dies ist nützlich, wenn einer der Pods ein höheres Target angibt, als für seine Funktionalität erforderlich ist. Verwenden Sie dies nur, wenn Sie sicher sind, dass der Pod keine APIs aus einer höheren iOS-Version verwendet.

@available- und #available-Prüfungen in Swift- und Objective-C-Code

@available und #available sind Swift- und Objective-C-Direktiven zum sicheren Aufrufen von APIs, die nur auf bestimmten OS-Versionen verfügbar sind. Wenn das Deployment Target des Projekts iOS 16.0 ist und eine Methode iOS 17.0 erfordert, führt ein direkter Aufruf zu einem Laufzeitfehler auf Geräten mit iOS 16.0–16.x. Verfügbarkeitsprüfungen sind ein obligatorisches Werkzeug zur Unterstützung mehrerer iOS-Versionen.

@available — Deklarative Prüfung

Die @available-Direktive gilt für Klassen, Methoden oder ganze Dateien. Wenn @available(iOS 17.0, *) vor einer Klasse angegeben wird, ist die gesamte Klasse nur unter iOS 17.0+ verfügbar. Der Versuch, die Klasse unter iOS 16.0 aufzurufen, führt zu einem Laufzeitfehler. Verwenden Sie @available, um ganze Funktionsmodule zu isolieren, die für eine bestimmte OS-Version spezifisch sind. Für Methoden innerhalb einer Klasse ermöglicht @available das Ausblenden einzelner Funktionen.

#available — Bedingte Ausführung

Die #available-Direktive (if #available) überprüft die OS-Version zur Laufzeit und führt Code nur bei Übereinstimmung aus. Sie wird innerhalb von Funktionen verwendet, um zwischen neuen und alten Implementierungen zu wählen. In Objective-C ist das Äquivalent @available(iOS 17.0, *) innerhalb von if. Für komplexere Prüfungen verwenden Sie ProcessInfo.processInfo.isOperatingSystemAtLeast, um Versionskomponenten (major, minor, patch) zu vergleichen.

swift
import UIKit
import SwiftUI

// 1. @available — gesamte Klasse nur für iOS 17+
@available(iOS 17.0, *)
class ObservationViewModel: ObservableObject {
    @Published var name: String = "User"

    // Verwendet Observation-Framework — nur iOS 17+ verfügbar
    func updateWithObservation() {
        let newName = "Updated via Observation"
        name = newName
    }
}

// 2. #available — bedingter Aufruf innerhalb einer Funktion
func configureLiveActivity() {
    if #available(iOS 16.1, *) {
        // Live Activities API — verfügbar seit iOS 16.1
        let activity = Activity<MyAttributes>(
            attributes: MyAttributes(name: "Live"),
            contentState: MyContentState(value: 42)
        )
        Task {
            await activity.activate()
        }
    } else {
        // Fallback: Push-Benachrichtigung oder nichts
        print("Live Activities nicht verfügbar")
    }
}

// 3. ProcessInfo — genaue Versionsprüfung
func checkOSVersion() {
    let osVersion = ProcessInfo.processInfo.operatingSystemVersion
    print("iOS \(osVersion.majorVersion).\(osVersion.minorVersion).\(osVersion.patchVersion)")

    // Komponentenvergleich
    if osVersion.majorVersion >= 17 {
        print("iOS 17+ erkannt")
    }
}

// 4. Objective-C @available
// Objective-C verwendet @available:
// if (@available(iOS 17.0, *)) { }

// 5. @available mit unavailable-Argument
@available(*, unavailable, message: "Use configureWithSwiftUI instead")
func legacyConfigureMethod() { }

Die Klasse ObservationViewModel verwendet @available, um iOS 17-Funktionalität zu isolieren. Die Funktion configureLiveActivity verwendet #available, um Live Activities (iOS 16.1+) mit einer Fallback-Implementierung zu prüfen. ProcessInfo überprüft die genaue OS-Version. @available(*, unavailable) markiert eine Methode als auf allen Versionen nicht verfügbar — für die Migration zu einer neuen API. Ohne diese Prüfungen stürzt eine Anwendung mit Deployment Target 16.0 auf Geräten mit iOS 16.0 ab, wenn sie iOS 17-APIs aufruft.

Objective-C und @available

Objective-C verwendet @available(iOS 17.0, *) mit derselben Semantik wie Swift #available. Der Unterschied: Objective-C prüft zur Laufzeit, Swift #aware ebenfalls zur Laufzeit, aber mit Compiler-Hinweisen zur Optimierung der Verzweigung. Für Objective-C-Code, der mit Swift interagiert, sind Verfügbarkeitsprüfungen auf der Objective-C-Seite erforderlich — Swift-Bridging fügt keine automatischen Prüfungen hinzu.

So wählen Sie das richtige Deployment Target für Ihr Projekt

Die Wahl des iOS Deployment Targets ist eine strategische Entscheidung, die drei Aspekte betrifft: Zielgruppenreichweite, verfügbare APIs und Codewartungskomplexität. Es gibt keinen einzigen richtigen Wert — die Wahl hängt von der Zielgruppe der Anwendung, den mindestens erforderlichen Funktionen und den Teamressourcen für die Unterstützung der Abwärtskompatibilität ab.

Der erste Faktor — Nutzungsstatistiken der iOS-Versionen. Apple veröffentlicht iOS-Installationsdaten auf der WWDC und im Apple Developer Dashboard. Stand Juni 2025 ist die Verteilung: iOS 15 — ~7%, iOS 16 — ~48%, iOS 17 — ~35%, iOS 18 — ~10%. Die Wahl von Target 16.0 bietet 83% Abdeckung, Target 17.0 — 35%. Für Massenanwendungen (soziale Netzwerke, Messenger, E-Commerce) wird Target 16.0 empfohlen. Für Nischen-B2B-Anwendungen mit spezifischen API-Anforderungen — Target 17.0.

Der zweite Faktor — erforderliche APIs. Wenn die Kernfunktion der Anwendung SwiftData (iOS 17+), Observation (iOS 17+) oder Live Activities (iOS 16.1+) erfordert, kann das Target nicht niedriger als die erforderliche Version sein. Die Analyse der erforderlichen APIs in der Entwurfsphase verhindert die Situation, dass mitten in der Entwicklung ein höheres Target benötigt wird. Verwenden Sie Verfügbarkeitsprüfungen als Backup-Plan, nicht als primäre Strategie.

Der dritte Faktor — Testressourcen. Die Unterstützung älterer iOS-Versionen erfordert Tests auf Simulatoren und echten Geräten mit diesen Versionen. iOS 15 wird auf iPhone 6s/7 getestet, iOS 16 — auf iPhone 8/X, iOS 17 — auf iPhone XS/XR. Jede zusätzliche Abwärtskompatibilitätsversion erhöht die QA-Zeit. Wenn das Team klein ist, ist es sinnvoll, ein Target 2–3 Versionen unter der aktuellen (16.0) zu wählen — ein Gleichgewicht zwischen Abdeckung und Aufwand.

App-TypEmpfohlenes TargetAbdeckungBegründung
Massenmarkt (Soziales, Marktplatz)iOS 16.0~83%Maximale Zielgruppe
Enterprise / B2BiOS 16.0~83%Unternehmensgeräte aktualisieren langsam
Startup / MVPiOS 17.0~35%Schnelle Entwicklung mit neuen APIs
Spiele (Metal 3+)iOS 17.0~35%Erfordern neue Grafik-APIs
Bibliothek/SDKiOS 15.0~90%Maximale Kompatibilität für Kunden

Bibliotheken und SDKs sollten das niedrigstmögliche Deployment Target haben (15.0 oder sogar 14.0) — die Nutzer der Bibliothek können jedes Target haben, das höher als Ihres ist. Wenn eine Bibliothek iOS 17.0 erfordert, kann die Hälfte der Projekte sie nicht verwenden. Für Anwendungen hingegen können Sie sich ein höheres Target leisten, um Zugang zu neuen APIs zu erhalten.

So senken Sie das Deployment Target nach einer Erhöhung

Das iOS Deployment Target zu senken ist eine Aufgabe, die bei der Notwendigkeit, die Zielgruppe zu erweitern, oder bei der Veröffentlichung einer Bibliothek mit Kompatibilität für alte Projekte auftritt. Im Gegensatz zur Erhöhung erfordert das Senken aktive Arbeit mit dem Code: Sie müssen alle direkten Aufrufe von APIs, die im neuen (niedrigeren) Target nicht verfügbar sind, durch #available-Prüfungen mit Fallback-Implementierungen ersetzen.

Der erste Schritt — API-Inventur. Xcode zeigt beim Senken des Targets keine Kompilierungsfehler an — es warnt nur mit gelben Warnungen. Sie müssen alle Methoden und Klassen finden, die mit @available(iOS N+, *) markiert sind, wobei N höher als das neue Target ist. Verwenden Sie die Projektsuche (Cmd+Shift+F) mit dem Muster "available(iOS". Jeder solche Aufruf ist ein Kandidat für die Refaktorisierung.

Der zweite Schritt — Ersetzen durch #available-Prüfungen. Jeder API-Aufruf aus einer höheren Version wird in if #available(iOS N+, *) { } else { } eingeschlossen. Für ganze Klassen verwenden Sie #if os(iOS) mit @available auf Typebene. Wenn eine API keinen vernünftigen Fallback hat (z. B. Live Activities), wird die Funktionalität für ältere Versionen mit einer Benachrichtigung deaktiviert.

swift
import UIKit
import SwiftUI

// Senken des Deployment Targets von 17.0 auf 16.0

// VORHER (@available iOS 17.0):
@available(iOS 17.0, *)
func setupObservation() {
    // Observation-Framework — nur iOS 17+
    let model = ObservationViewModel()
    // ...
}

// NACHHER (#available-Prüfung):
func setupObservationCompatible() {
    if #available(iOS 17.0, *) {
        // iOS 17+: Observation-Framework
        let model = ObservationViewModel()
        // ...
    } else {
        // iOS 16.x: ObservableObject mit @Published
        let model = LegacyObservableViewModel()
        // ...
    }
}

// Für UIKit iOS 17+ API:
@available(iOS 17.0, *)
class ModernViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Verwendet UIKit TraitChanges (iOS 17+)
        registerForTraitChanges([UITraitVerticalSizeClass.self]) { _, _ in }
    }
}

// Fallback für iOS 16:
class LegacyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Kein registerForTraitChanges — verwende traitCollectionDidChange
    }

    override func traitCollectionDidChange(_: UITraitCollection?) {
        super.traitCollectionDidChange(nil)
        // Behandlung von Trait-Änderungen für iOS 16
    }
}

// Factory zur Auswahl der Implementierung nach iOS-Version
func makeViewController() -> UIViewController {
    if #available(iOS 17.0, *) {
        return ModernViewController()
    } else {
        return LegacyViewController()
    }
}

Der Code zeigt das Senken des Targets von iOS 17.0 auf 16.0. Die Funktion setupObservation wird durch setupObservationCompatible mit einer #available-Prüfung ersetzt. Der ViewController wird in Modern (iOS 17+) und Legacy (iOS 16) aufgeteilt, mit einer makeViewController-Fabrik, die die Implementierung nach OS-Version auswählt. Diese Architektur ermöglicht die Unterstützung von zwei Deployment Targets, ohne die gesamte Codebasis zu duplizieren — nur versionierte Module.

Xcode-Warnungen und deren Behebung

Nach dem Senken des Deployment Targets hebt Xcode alle API-Aufrufe, die im neuen Target nicht verfügbar sind, gelb hervor. Die Warnung "In iOS 16.0 and later" bedeutet, dass die Methode eine höhere Version erfordert. Lösungen: @available oder if #available hinzufügen (empfohlen), über @available(*, deprecated) für schrittweise Migration unterdrücken, oder den Aufruf entfernen. Die Aktivierung von "Treat Warnings as Errors" im Projekt wandelt diese Warnungen in Kompilierungsfehler um — aktivieren Sie diese Option zur Kontrolle.

Häufig gestellte Fragen

Was ist iOS Deployment Target?

iOS Deployment Target ist die Mindestversion von iOS, auf der eine Anwendung ausgeführt werden kann. Es wird in Xcode Project → Info → iOS Deployment Target angegeben. Eine App mit Target 16.0 kann nicht auf iOS 15.0 und darunter installiert werden. Der App Store filtert Anwendungen nach diesem Parameter — Benutzer mit nicht unterstützten Versionen sehen die App nicht. Das Android-Äquivalent ist minSdkVersion.

Wie unterscheidet sich iOS Deployment Target von minSdkVersion?

Beide Parameter legen die Mindestversion des Betriebssystems für die Installation einer Anwendung fest. iOS Deployment Target wird in Info.plist (MinimumOSVersion) gespeichert, minSdkVersion — in AndroidManifest.xml. iOS hat keine Entsprechungen zu targetSdkVersion und compileSdkVersion — alle Verhaltensänderungen werden beim Kompilieren mit dem neuen Base SDK angewendet. In Android werden Verhaltensänderungen über targetSdkVersion gesteuert. Code-Prüfungen: @available in Swift vs Build.VERSION.SDK_INT in Android.

Welches iOS Deployment Target sollte ich 2026 wählen?

Für Massenanwendungen wird iOS 16.0 (83 % der Geräte) empfohlen, für Startups und Projekte mit SwiftUI Observation/SwiftData iOS 17.0 (35 % der Geräte). iOS 16.0 wird auf iPhone 8 und neuer unterstützt, enthält SwiftUI Layout, NavigationStack, Live Activities. iOS 17.0 bietet Observation, SwiftData, TipKit. Für Bibliotheken und SDKs — iOS 15.0 für maximale Kompatibilität.

Wie überprüfe ich die iOS-Version in Swift-Code?

In Swift verwenden Sie #available(iOS 17.0, *) innerhalb von Funktionen für bedingte Codeausführung oder @available(iOS 17.0, *) auf Klassen-/Methodenebene für deklarative Prüfungen. Für die genaue Version — ProcessInfo.processInfo.operatingSystemVersion, die OperatingSystemVersion zurückgibt. In Objective-C verwenden Sie @available(iOS 17.0, *) innerhalb von if. Ohne Prüfungen führt der Aufruf einer API oberhalb des Deployment Targets zu einem Laufzeitfehler.

Kann ich das Deployment Target nach der Veröffentlichung senken?

Sie können das iOS Deployment Target senken, aber es erfordert, alle direkten API-Aufrufe aus höheren Versionen durch #available-Prüfungen mit Fallback-Implementierungen zu ersetzen. Xcode warnt mit gelben Hinweisen, zeigt aber keinen Fehler an. APIs ohne vernünftigen Fallback (Live Activities, SwiftData) werden auf älteren Versionen deaktiviert. Es wird empfohlen, mit einem Target 2 Versionen unter der aktuellen zu beginnen, um eine komplexe Migration zu vermeiden.

Zusammenfassung

  • iOS Deployment Target — die Mindestversion des Betriebssystems zum Ausführen einer Anwendung, Äquivalent zu minSdkVersion in Android
  • Wird in Xcode Build Settings (IPHONEOS_DEPLOYMENT_TARGET) konfiguriert und in Info.plist (MinimumOSVersion) gespeichert
  • @available und #available — die wichtigsten Swift-Mechanismen zum sicheren Aufrufen von APIs oberhalb des Deployment Targets
  • Die Target-Wahl beeinflusst die Geräteabdeckung: iOS 16.0 — 83%, iOS 17.0 — 35%, iOS 15.0 — 90%
  • Für Massenanwendungen wird iOS 16.0 empfohlen, für Bibliotheken — iOS 15.0, für Startups mit SwiftData — iOS 17.0
  • Das Senken des Targets erfordert die Refaktorisierung aller API-Aufrufe höherer Versionen zu #available-Prüfungen mit Fallbacks
  • Base SDK in iOS ist immer das neueste — Verhaltensänderungen gelten für alle Anwendungen, anders als Android targetSdkVersion

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch