iOS Deployment Target: nedir, minimum iOS sürümü ve yapılandırma

Yazar: IT Sectr Yayınlanma: 2026-02-08 Okuma süresi: 14 dk

iOS Deployment Target (ayrıca iOS Target, Deployment Target olarak da bilinir), bir uygulamanın çalıştırılabileceği Apple işletim sisteminin minimum sürümüdür. Bu parametre Xcode projesinde ayarlanır ve uyumluluk sınırını tanımlar: iOS 16.0 seçildiğinde, uygulama yalnızca iOS 16.0 ve üzeri cihazlara yüklenir. Apple Developer Documentation'a göre, doğru Deployment Target seçimi hem hedef kitle erişimini hem de yeni Swift ve Objective-C framework API'lerine erişimi etkiler.

Önemli Noktalar

  • iOS Deployment Target — bir uygulamayı yüklemek ve çalıştırmak için minimum iOS sürümü, Android'deki minSdkVersion'ın tam karşılığı
  • Xcode'da yapılandırma: Project → Info → iOS Deployment Target, ayrıca Swift Package Manager ve CocoaPods'ta
  • @available ve #available — mevcut Deployment Target'ın üzerindeki API'leri güvenle çağırmak için Swift mekanizmaları
  • Her yeni Deployment Target, yeni SwiftUI, UIKit, Foundation, AppKit API'lerine erişim sağlar ancak cihaz kapsamını azaltır
  • App Store, uygulamaları cihazın iOS sürümüne göre filtreler — Deployment Target eşleşmezse uygulama görüntülenmez

iOS Deployment Target nedir?

iOS Deployment Target, bir uygulamanın çalışabileceği iOS, iPadOS, tvOS, watchOS veya visionOS'un en eski sürümünü belirten bir Xcode yapılandırma parametresidir. Her Xcode projesi, bu ayarı her platform için ayrı ayrı içerir. Örneğin, bir iOS uygulaması Deployment Target 16.0'a sahipken, bir watchOS uzantısı 9.0'a sahip olabilir. Kullanıcının cihazı iOS 15.0 çalıştırıyorsa, Target 16.0 olan bir uygulama App Store'da görünmez ve doğrudan dağıtım yoluyla yüklenemez.

Deployment Target mekanizması, yükleme sırasında işletim sistemi sürümü kontrolüne dayanır. iOS App Store, Info.plist'teki (MinimumOSVersion anahtarı) Deployment Target değerini kullanıcının cihazındaki işletim sistemi sürümüyle karşılaştırır. Cihaz sürümü daha düşükse — "İndir" düğmesi engellenir ve App Store API'si, bu cihaz için arama sonuçlarında uygulamayı döndürmez. Aynı davranış TestFlight, ad-hoc ve kurumsal dağıtım için de geçerlidir.

StatCounter'in Haziran 2025 verilerine göre, iOS 16 aktif iPhone cihazlarının yaklaşık %48'ini oluştururken, iOS 17 — %35, iOS 18 — %12, daha eski sürümler — yaklaşık %5'tir. Deployment Target 16.0 seçimi cihazların %83'ünü kapsar, Target 17.0 — %35'ini (yalnızca iOS 17+). Bu rakamlar karar verme için kritiktir: Target ne kadar yüksekse, hedef kitle o kadar küçük, ancak en yeni SwiftUI ve UIKit API'lerine erişim o kadar kolay olur.

Deployment TargetCihaz Payı (Haziran 2025)Mevcut Özellikler
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%Yeni Apple Intelligence API'leri, Geliştirilmiş SwiftUI

iOS'un her yeni sürümü yalnızca kullanıcı özellikleri değil, aynı zamanda geliştiriciler için API'ler de ekler. Yeni SwiftUI değiştiricileri, UIKit yöntemleri, SwiftData ve Observation gibi framework'ler yalnızca belirli bir Deployment Target'da kullanılabilir. Geliştirici, hedef kitle erişimi ile modern araçların kullanılabilirliği arasında denge kurmalıdır.

iOS Deployment Target vs minSdkVersion: Android ile karşılaştırma

iOS Deployment Target ve Android'deki minSdkVersion aynı işlevi görür — bir uygulama için minimum işletim sistemi sürümünü ayarlar. Ancak, uygulama mekanizmaları ve ilgili araçlar farklılık gösterir. Bu farklılıkları anlamak, her iki platformda çalışan geliştiriciler için faydalıdır ve ekosistemler arasında geçiş yaparken karışıklığı önlemeye yardımcı olur.

iOS'ta minimum sürüm, Xcode derleme ayarları (IPHONEOS_DEPLOYMENT_TARGET) aracılığıyla ayarlanır ve Info.plist'te (MinimumOSVersion) saklanır. Android'de — build.gradle (minSdkVersion) ve AndroidManifest.xml (<uses-sdk android:minSdkVersion>) aracılığıyla. iOS'ta targetSdkVersion ve compileSdkVersion'ın karşılıkları yoktur — iOS'taki davranışsal değişiklikler, uygulamanın derlendiği SDK (Base SDK) ve cihazdaki işletim sistemi sürümü tarafından yönetilir.

ParametreiOSAndroid
Minimum sürümDeployment Target (IPHONEOS_DEPLOYMENT_TARGET)minSdkVersion
Nerede belirtilirXcode Build Settings → Info.plistbuild.gradle → AndroidManifest.xml
Kodda kontrol@available / #available / if #availableBuild.VERSION.SDK_INT
Hedef sürümBase SDK (her zaman en son)compileSdkVersion + targetSdkVersion
Mağaza filtrelemeApp Store: MinimumOSVersionGoogle Play: minSdkVersion

Temel fark, iOS'ta Base SDK'nın her zaman Xcode'da yüklü olan en son sürüm olmasıdır. Geliştirici, Android'deki gibi compileSdkVersion'ı seçemez — uygulama her zaman mevcut en son SDK'ya karşı derlenir. iOS'taki yeni davranışsal değişiklikler, Deployment Target'dan bağımsız olarak yeni Base SDK ile derlenen tüm uygulamalara uygulanır. Android'de targetSdkVersion, davranışsal değişiklikler üzerinde kontrol sağlar; iOS'ta böyle bir ayrım yoktur.

iOS vs Android'de davranışsal değişiklikler

Davranışsal değişikliklerin targetSdkVersion'a bağlı olduğu Android'in aksine, iOS, yeni Xcode ve Base SDK sürümüyle derlenen tüm uygulamalara davranışsal değişiklikler uygular. Örneğin, iOS 13 Karanlık Mod'u tanıttı — Xcode 11 ve iOS 13 SDK ile oluşturulan tüm uygulamalar, Deployment Target'dan bağımsız olarak otomatik olarak karanlık tema desteği aldı. Android'de benzer bir değişiklik (Scoped Storage) yalnızca targetSdk >= 29 olduğunda uygulanır. iOS geliştiricileri, erteleme olasılığı olmadan her yeni Xcode ile davranışsal değişikliklere hazırlıklı olmalıdır.

Her iki platformun bilgisi, minimum sürüm seçiminin sonuçlarını tahmin etmeye ve yeni API'ler için kod güncellemelerini planlamaya olanak tanır. IT Sectr'de her iki ekosistemi de 2017'den beri kullanıyoruz — pratik, kapsam ve işlevsellik dengesi için iOS Deployment Target'ın mevcut sürümün 2-3 altında seçilmesi gerektiğini göstermektedir.

Xcode'da Deployment Target nasıl yapılandırılır

iOS Deployment Target yapılandırması projenin birden çok yerinde yapılır: ana Target, Pods projesi (CocoaPods kullanılıyorsa), Swift Package Manager bağımlılıkları ve Widget/Extension hedefleri. Ana uygulama ve uzantılar arasında değerler farklıysa, App Store tümünün maksimumunu kullanır — yani bir uzantı, ana uygulamadan daha düşük bir Target'a sahip olamaz.

Xcode proje düzenleyicisinde yapılandırma

Xcode projesini açın → Target'ı seçin → General sekmesi → Minimum iOS Deployment bölümü. Açılır liste, Xcode'da yüklü olan tüm mevcut iOS SDK sürümlerini gösterir. Değişiklik tüm derleme şemalarına uygulanır. Alternatif olarak — Build Settings sekmesi → iOS Deployment Target (IPHONEOS_DEPLOYMENT_TARGET). Proje birden çok Target uzantısı (Widget, Watch) içeriyorsa, her birinin kendi Deployment Target'ı vardır.

Swift Package Manager aracılığıyla yapılandırma

SPM aracılığıyla dağıtılan kitaplıklar için Deployment Target, Package.swift dosyasında platforms parametresinde belirtilir. platforms: [.iOS(.v16)] olan bir kitaplık, yalnızca Deployment Target iOS 16.0+ olan uygulamalar için kullanılabilir olacaktır. Target 15.0 olan bir projeye böyle bir kitaplık eklerken, Xcode bir uyumsuzluk hatası gösterecektir. CocoaPods'ta Deployment Target, Podfile'da ayarlanır: platform :ios, '16.0'.

swift
// Package.swift — SPM kitaplığı için Deployment Target
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")
            ]
        )
    ]
)

// Kodda uyumluluk kontrolü
#if swift(>=5.9)
// Swift 5.9+ özellikleri (Xcode 15+)
#endif

Örnekte, Package.swift platformları iOS 16+, macOS 13+, watchOS 9+, tvOS 16+ olarak ayarlar. iOS 16.0'ın altında Deployment Target'a sahip herhangi bir proje bu kitaplığı ekleyemez. swiftSettings parametresi, belirli bir Swift sürümü için yakında gelecek özellikleri içerir. SPM, bir bağımlılık eklerken otomatik olarak platforms uyumluluğunu kontrol eder.

CocoaPods ve Podfile

Podfile, platform :ios, '16.0' yönergesini kullanır. pod install'dan sonra CocoaPods, her pod kitaplığının Deployment Target'ını kontrol eder: en az bir tanesi projeden daha yüksek bir Target'a sahipse, yükleme "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" hatasıyla başarısız olur. Çözüm, sorunlu pod'un Target'ını düşürmek veya projenin Target'ını yükseltmektir.

ruby
# Podfile — Deployment Target ile örnek
platform :ios, '16.0'

# Deployment Target uyarılarını yoksay
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

Podfile'daki post_install kancası, tüm pod kitaplıkları için zorla Deployment Target 16.0 olarak ayarlar. Bu, pod'lardan biri işlevselliği için gerekenden daha yüksek bir Target belirttiğinde kullanışlıdır. Bunu yalnızca pod'un daha yüksek bir iOS sürümünün API'lerini kullanmadığından eminseniz kullanın.

Swift ve Objective-C kodunda @available ve #available kontrolleri

@available ve #available, yalnızca belirli işletim sistemi sürümlerinde kullanılabilen API'leri güvenle çağırmak için Swift ve Objective-C yönergeleridir. Projenin Deployment Target'ı iOS 16.0 ise ve bir yöntem iOS 17.0 gerektiriyorsa, doğrudan çağrı, iOS 16.0–16.x çalıştıran cihazlarda çalışma zamanı hatasına neden olur. Kullanılabilirlik kontrolleri, birden çok iOS sürümünü desteklemek için zorunlu bir araçtır.

@available — Bildirimsel kontrol

@available yönergesi sınıflara, yöntemlere veya tüm dosyalara uygulanır. Bir sınıfın önünde @available(iOS 17.0, *) belirtilmişse, sınıfın tamamı yalnızca iOS 17.0+'da kullanılabilir. Sınıfı iOS 16.0'da çağırmaya çalışmak çalışma zamanı hatasına neden olur. Belirli bir işletim sistemi sürümüne özgü işlevselliğin tüm modüllerini izole etmek için @available kullanın. Bir sınıfın içindeki yöntemler için @available, tek tek işlevleri gizlemeye olanak tanır.

#available — Koşullu yürütme

#available yönergesi (if #available), çalışma zamanında işletim sistemi sürümünü kontrol eder ve yalnızca eşleştiğinde kodu yürütür. Yeni ve eski uygulamalar arasında seçim yapmak için işlevlerin içinde kullanılır. Objective-C'de eşdeğeri, if içindeki @available(iOS 17.0, *)'dir. Daha karmaşık kontroller için, sürüm bileşenlerini (major, minor, patch) karşılaştırmak üzere ProcessInfo.processInfo.isOperatingSystemAtLeast kullanın.

swift
import UIKit
import SwiftUI

// 1. @available — tüm sınıf yalnızca iOS 17+ için
@available(iOS 17.0, *)
class ObservationViewModel: ObservableObject {
    @Published var name: String = "User"

    // Observation framework kullanır — yalnızca iOS 17+ kullanılabilir
    func updateWithObservation() {
        let newName = "Updated via Observation"
        name = newName
    }
}

// 2. #available — işlev içinde koşullu çağrı
func configureLiveActivity() {
    if #available(iOS 16.1, *) {
        // Live Activities API — iOS 16.1'den beri kullanılabilir
        let activity = Activity<MyAttributes>(
            attributes: MyAttributes(name: "Live"),
            contentState: MyContentState(value: 42)
        )
        Task {
            await activity.activate()
        }
    } else {
        // Geri dönüş: push bildirimi veya hiçbir şey
        print("Live Activities kullanılamaz")
    }
}

// 3. ProcessInfo — kesin sürüm kontrolü
func checkOSVersion() {
    let osVersion = ProcessInfo.processInfo.operatingSystemVersion
    print("iOS \(osVersion.majorVersion).\(osVersion.minorVersion).\(osVersion.patchVersion)")

    // Bileşen karşılaştırması
    if osVersion.majorVersion >= 17 {
        print("iOS 17+ algılandı")
    }
}

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

// 5. @available unavailable argümanıyla
@available(*, unavailable, message: "Use configureWithSwiftUI instead")
func legacyConfigureMethod() { }

ObservationViewModel sınıfı, iOS 17 işlevselliğini izole etmek için @available kullanır. configureLiveActivity işlevi, bir geri dönüş uygulamasıyla Live Activities'i (iOS 16.1+) kontrol etmek için #available kullanır. ProcessInfo, tam işletim sistemi sürümünü kontrol eder. @available(*, unavailable), yeni bir API'ye geçiş için bir yöntemi tüm sürümlerde kullanılamaz olarak işaretler. Bu kontroller olmadan, Deployment Target 16.0 olan bir uygulama, iOS 17 API'lerini çağırırken iOS 16.0 çalıştıran cihazlarda çöker.

Objective-C ve @available

Objective-C, Swift #available ile aynı anlambilimle @available(iOS 17.0, *) kullanır. Fark: Objective-C çalışma zamanında kontrol eder, Swift #available da çalışma zamanındadır ancak dal optimizasyonu için derleyici ipuçlarıyla birlikte. Swift ile etkileşime giren Objective-C kodu için, Objective-C tarafında kullanılabilirlik kontrolleri gereklidir — Swift köprülemesi otomatik kontroller eklemez.

Projeniz için doğru Deployment Target nasıl seçilir

iOS Deployment Target seçimi üç yönü etkileyen stratejik bir karardır: hedef kitle erişimi, mevcut API'ler ve kod bakım karmaşıklığı. Tek bir doğru değer yoktur — seçim, uygulamanın hedef kitlesine, minimum gerekli özelliklere ve geriye dönük uyumluluk desteği için ekip kaynaklarına bağlıdır.

Birinci faktör — iOS sürümü kullanım istatistikleri. Apple, WWDC'de ve Apple Developer Dashboard'da iOS kurulum verilerini yayınlar. Haziran 2025 itibarıyla dağılım şöyledir: iOS 15 — ~%7, iOS 16 — ~%48, iOS 17 — ~%35, iOS 18 — ~%10. Target 16.0 seçimi %83 kapsama, Target 17.0 — %35 kapsama sağlar. Kitlesel uygulamalar (sosyal ağlar, mesajlaşma, e-ticaret) için Target 16.0 önerilir. Belirli API gereksinimleri olan niş B2B uygulamaları için — Target 17.0.

İkinci faktör — gerekli API'ler. Uygulamanın temel özelliği SwiftData (iOS 17+), Observation (iOS 17+) veya Live Activities (iOS 16.1+) gerektiriyorsa, Target gerekli sürümden düşük olamaz. Tasarım aşamasında gerekli API'lerin analizi, geliştirmenin ortasında daha yüksek bir Target gerektiğinin keşfedilmesi durumunu önler. Kullanılabilirlik kontrollerini yedek plan olarak kullanın, birincil strateji olarak değil.

Üçüncü faktör — test kaynakları. Eski iOS sürümlerini desteklemek, bu sürümlere sahip simülatörler ve gerçek cihazlarda test yapılmasını gerektirir. iOS 15, iPhone 6s/7'de, iOS 16 — iPhone 8/X'te, iOS 17 — iPhone XS/XR'de test edilir. Geriye dönük uyumluluğun her ek sürümü QA süresini artırır. Ekip küçükse, mevcut sürümün 2-3 altında bir Target (16.0) seçmek makuldür — kapsam ve çaba arasında bir denge.

Uygulama TürüÖnerilen TargetKapsamGerekçe
Kitlesel (sosyal, pazar yeri)iOS 16.0~83%Maksimum hedef kitle
Kurumsal / B2BiOS 16.0~83%Kurumsal cihazlar yavaş güncellenir
Startup / MVPiOS 17.0~35%Yeni API'lerle hızlı geliştirme
Oyunlar (Metal 3+)iOS 17.0~35%Yeni grafik API'leri gerektirir
Kitaplık/SDKiOS 15.0~90%Müşteriler için maksimum uyumluluk

Kitaplıklar ve SDK'lar mümkün olan en düşük Deployment Target'a (15.0 veya hatta 14.0) sahip olmalıdır — kitaplık tüketicileri sizden daha yüksek herhangi bir Target'a sahip olabilir. Bir kitaplık iOS 17.0 gerektiriyorsa, projelerin yarısı onu kullanamaz. Uygulamalar için ise, yeni API'lere erişmek için daha yüksek bir Target'ı karşılayabilirsiniz.

Deployment Target'ı yükselttikten sonra düşürme

iOS Deployment Target'ı düşürmek, hedef kitleyi genişletme ihtiyacı duyulduğunda veya eski projelerle uyumlu bir kitaplık yayınlarken ortaya çıkan bir görevdir. Yükseltmenin aksine, düşürme kodla aktif çalışma gerektirir: yeni (daha düşük) Target'ta bulunmayan tüm API'lerin doğrudan çağrılarını #available kontrolleri ve geri dönüş uygulamalarıyla değiştirmeniz gerekir.

İlk adım — API envanteri. Xcode, Target'ı düşürürken derleme hataları göstermez — yalnızca sarı uyarılarla uyarır. @available(iOS N+, *) ile işaretlenmiş tüm yöntemleri ve sınıfları bulmanız gerekir; burada N, yeni Target'tan yüksektir. "available(iOS" deseniyle proje araması (Cmd+Shift+F) kullanın. Bu tür her çağrı, yeniden düzenleme için adaydır.

İkinci adım — #available kontrolleriyle değiştirme. Daha yüksek bir sürümden her API çağrısı, if #available(iOS N+, *) { } else { } içine sarılır. Tüm sınıflar için, tür düzeyinde @available ile #if os(iOS) kullanın. Bir API'nin makul bir geri dönüşü yoksa (örneğin, Live Activities), işlev, kullanıcı bildirimiyle eski sürümler için devre dışı bırakılır.

swift
import UIKit
import SwiftUI

// Deployment Target'ı 17.0'den 16.0'a düşürme

// ÖNCE (@available iOS 17.0):
@available(iOS 17.0, *)
func setupObservation() {
    // Observation framework — yalnızca iOS 17+
    let model = ObservationViewModel()
    // ...
}

// SONRA (#available kontrolü):
func setupObservationCompatible() {
    if #available(iOS 17.0, *) {
        // iOS 17+: Observation framework
        let model = ObservationViewModel()
        // ...
    } else {
        // iOS 16.x: @Published ile ObservableObject
        let model = LegacyObservableViewModel()
        // ...
    }
}

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

// iOS 16 için geri dönüş:
class LegacyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // registerForTraitChanges yok — traitCollectionDidChange kullan
    }

    override func traitCollectionDidChange(_: UITraitCollection?) {
        super.traitCollectionDidChange(nil)
        // iOS 16 için traits değişikliklerini işleme
    }
}

// iOS sürümüne göre uygulama seçmek için fabrika
func makeViewController() -> UIViewController {
    if #available(iOS 17.0, *) {
        return ModernViewController()
    } else {
        return LegacyViewController()
    }
}

Kod, Target'ı iOS 17.0'den 16.0'a düşürmeyi gösterir. setupObservation işlevi, bir #available kontrolüyle setupObservationCompatible ile değiştirilir. ViewController, işletim sistemi sürümüne göre uygulamayı seçen bir makeViewController fabrikasıyla Modern (iOS 17+) ve Legacy (iOS 16) olarak bölünür. Bu mimari, tüm kod tabanını çoğaltmadan iki Deployment Target'ı desteklemeye olanak tanır — yalnızca sürümlendirilmiş modüller.

Xcode uyarıları ve çözümü

Deployment Target'ı düşürdükten sonra Xcode, yeni Target'ta bulunmayan tüm API çağrılarını sarı renkte vurgulayacaktır. "In iOS 16.0 and later" uyarısı, yöntemin daha yüksek bir sürüm gerektirdiği anlamına gelir. Çözümler: @available veya if #available ekleyin (önerilir), aşamalı geçiş için @available(*, deprecated) aracılığıyla bastırın veya çağrıyı kaldırın. Projede "Treat Warnings as Errors" seçeneğini etkinleştirmek, bu uyarıları derleme hatalarına dönüştürecektir — kontrol için bu seçeneği etkinleştirin.

Sıkça Sorulan Sorular

iOS Deployment Target nedir?

iOS Deployment Target, bir uygulamanın çalışabileceği minimum iOS sürümüdür. Xcode Project → Info → iOS Deployment Target'ta belirtilir. Target 16.0 olan bir uygulama iOS 15.0 ve altına yüklenemez. App Store, uygulamaları bu parametreye göre filtreler — desteklenmeyen sürümlere sahip kullanıcılar uygulamayı görmez. Android'deki karşılığı minSdkVersion'dır.

iOS Deployment Target, minSdkVersion'dan nasıl farklıdır?

Her iki parametre de bir uygulamayı yüklemek için minimum işletim sistemi sürümünü ayarlar. iOS Deployment Target, Info.plist'te (MinimumOSVersion) saklanır, minSdkVersion — AndroidManifest.xml'de. iOS'ta targetSdkVersion ve compileSdkVersion'ın karşılıkları yoktur — tüm davranışsal değişiklikler yeni Base SDK ile derlenirken uygulanır. Android'de davranışsal değişiklikler targetSdkVersion aracılığıyla kontrol edilir. Kod kontrolleri: Swift'te @available vs Android'de Build.VERSION.SDK_INT.

2026'da hangi iOS Deployment Target seçilmelidir?

Kitlesel uygulamalar için iOS 16.0 (cihazların %83'ü) ve SwiftUI Observation/SwiftData kullanan startup'lar için iOS 17.0 (cihazların %35'i) önerilir. iOS 16.0, iPhone 8 ve sonrasında desteklenir, SwiftUI Layout, NavigationStack, Live Activities içerir. iOS 17.0, Observation, SwiftData, TipKit sağlar. Kitaplıklar ve SDK'lar için — maksimum uyumluluk için iOS 15.0.

Swift kodunda iOS sürümü nasıl kontrol edilir?

Swift'te, koşullu kod yürütme için işlevlerin içinde #available(iOS 17.0, *) veya bildirimsel kontrol için sınıf/yöntem düzeyinde @available(iOS 17.0, *) kullanın. Kesin sürüm için — OperatingSystemVersion döndüren ProcessInfo.processInfo.operatingSystemVersion'ı kullanın. Objective-C'de, if içinde @available(iOS 17.0, *) kullanın. Kontroller olmadan, Deployment Target'ın üzerindeki bir API'yi çağırmak çalışma zamanı hatasına neden olur.

Yayınladıktan sonra Deployment Target'ı düşürebilir miyim?

iOS Deployment Target'ı düşürebilirsiniz, ancak daha yüksek sürümlerden tüm doğrudan API çağrılarının #available kontrolleri ve geri dönüş uygulamalarıyla değiştirilmesini gerektirir. Xcode sarı uyarılarla uyarır ancak hata göstermez. Makul bir geri dönüşü olmayan API'ler (Live Activities, SwiftData) eski sürümlerde devre dışı bırakılır. Karmaşık geçişten kaçınmak için mevcut sürümün 2 altında bir Target ile başlamanız önerilir.

Özet

  • iOS Deployment Target — bir uygulamayı çalıştırmak için minimum işletim sistemi sürümü, Android'deki minSdkVersion'ın karşılığı
  • Xcode Build Settings'te (IPHONEOS_DEPLOYMENT_TARGET) yapılandırılır ve Info.plist'te (MinimumOSVersion) saklanır
  • @available ve #available — Deployment Target'ın üzerindeki API'leri güvenle çağırmak için ana Swift mekanizmaları
  • Target seçimi cihaz kapsamını etkiler: iOS 16.0 — %83, iOS 17.0 — %35, iOS 15.0 — %90
  • Kitlesel uygulamalar için iOS 16.0, kitaplıklar için — iOS 15.0, SwiftData kullanan startup'lar için — iOS 17.0 önerilir
  • Target'ı düşürmek, geri dönüşlerle #available kontrollerine yüksek sürüm API çağrılarının yeniden düzenlenmesini gerektirir
  • iOS'ta Base SDK her zaman en son sürümdür — davranışsal değişiklikler tüm uygulamalara uygulanır, Android targetSdkVersion'ın aksine

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun