SwiftUI, iOS 12.x ve daha eski sürümlerle geriye dönük uyumlu mudur?


124

SwiftUI ile yapılmış bir uygulamam varsa, iOS 13'ün altındaki iOS için çalışır mı?


1
Neden denemiyorsun Xcode 11 beta indirilebilir ve eğitimler burada developer.apple.com/tutorials/swiftui .
Martin R.

1
Millet cevabımın neden @ Jean-François Fabre tarafından silindiğini bilen var mı?
CrazyPro007

10
HAYIR, SwiftUI, iOS 12.x ve daha eski sürümlerde çalışmayacaktır.
ystack

Yanıtlar:


90

Kısa süre önce Xcode 11'de kontrol ettim ve SwiftUI'nin Viewuygulamasında görülebileceği gibi geriye dönük olarak uyumlu olmayacağını doğrulayabilirim :

/// A piece of user interface.
///
/// You create custom views by declaring types that conform to the `View`
/// protocol. Implement the required `body` property to provide the content
/// and behavior for your custom view.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol View : _View {

    /// The type of view representing the body of this view.
    ///
    /// When you create a custom view, Swift infers this type from your
    /// implementation of the required `body` property.
    associatedtype Body : View

    /// Declares the content and behavior of this view.
    var body: Self.Body { get }
}

7
En az 5 yıl daha mı? Yani şu anda yalnızca iOS 7 ve daha düşük sürümlerde bulunan API'leri mi kullanıyorsunuz?
David Monagle

5
İşin garibi, Mojave'de (10.4) xcode 11 ile yalnızca Catalina (10.5)
Túlio Calazans

34

Sanmıyorum, çünkü tüm kitaplıklar iOS 13 veya üzeri için zaten açıklanmış durumda.

Ayrıca, belgelerde Apple desteklenen sürümlerden açıkça bahsetmektedir:

  • iOS13.0 + beta
  • macOS10.15 + beta
  • tvOS 13.0+ beta
  • watchOS 6.0+ beta

görüntü açıklamasını buraya girin


32

SwiftUI ve birleştirin kullanım Opak-Return-Türleri bunların uygulanmasına doğasına Swift 5.1 ve bağlı uygulanmaktadır (diğer özellikleri yanında) Swift 5.1 ve Opak-Dönüş tiplerine beri, geri dağıtılabilir edilemez Swift 5.0 aksine ( DSL veya Property-Wrappers ) ve iOS 13, işletim sisteminde Swift 5.1 çalışma zamanını içeren en eski iOS SDK olduğu için, sorunun cevabı hayır ve SwiftUI ve Combine , iOS'un önceki sürümlerinde kullanılamaz.

Apple, Swift 5.1 çalışma zamanını (veya gelecekteki sürümleri) önceki Swift sürümlerinde olduğu gibi uygulama ile bir araya getirmenin bir yolunu sağlamadığı sürece, ancak Uygulama boyutunu artıracağı ve tüm sisteme yeniden ek yük getireceği için bunun olacağından şüpheliyim hiç olur.

Bu belki geriye doğru uyumlu olacak

Swift 5.1 henüz yayınlanmamış olan ve SwiftUIkullanımları özellikleri gibi opak dönüş türleri , DSL , propertyDelegate (şekilde WWDC tanıtılan propertyWrapper mevcut olacaktır) vb, sadece Swift 5.1. Swift 5 ikili kararlı olduğundan, Xcode11 içinde gömülü hızlı çerçeveler kullanmak mümkün olmadı sanırım, bu nedenle bu özellikleri Cocoa'nın çekirdeğinde yeniden uyguladılar ve Swift 5.1 piyasaya çıkana kadar iOS13 + olarak işaretlediler.

Benim varsayımlarım, Ordered Collection Diffing ve DSL'in Swift 5.1'de mevcut olacağı ve Xcode veya Apple'ın eko sistemi ile hiçbir ilişkisi olmayacağı, ancak aynı zamanda olarak işaretlendiği gerçeğine dayanıyor @available(iOS13,...). Bu, Swift 5.1 özelliklerini kullanarak her şeyi iOS kullanılabilirlik özelliğiyle işaretlemeleri gerektiği anlamına geliyor. Swift 5.1 yayımlanan alır kez Bazıları kaldırılır alacak, ama emin yaklaşık olamaz SwiftUIve CombineApple aksi söylemezse. Bu, DSL'in teklifinde de belirtilmiştir :

Uygulama: PR . Xcode geliştirici önizlemesindeki uygulamanın burada açıklanandan biraz daha basit bir dönüşüm kullandığını unutmayın. Bağlantılı PR , önizlemedeki uygulamayı yansıtır ancak bu teklife uyması için aktif geliştirme aşamasındadır.

Dolayısıyla geriye dönük uyumsuzluk sınırlaması, Swift 5.1 piyasaya sürüldüğünde kaldırılabilir, ancak bunun gerçekten Apple ekibi tarafından açıklığa kavuşturulması gerekiyor .


1
herhangi bir güncelleme var mı_ Bahsettiğiniz halkla ilişkiler birleştirildi, Swift 5.1 yayınlandı
kullanıcı158

@ user158 Cevabı güncelledim ve bu özelliğin neden desteklenemediğini açıkladım.
farzadshbfn

15

Hayır. SwiftUI , iOS 13 veya üzeri, macOS 10.15 veya üzeri, tvOS 13 veya üzeri ya da watchOS 6 veya üzeri bir dağıtım hedefi gerektirir. Çerçeve, işletim sistemlerinin eski sürümlerinde bulunmayan birçok yeni türü içerir.


Daha düşük dağıtım hedefini desteklerken SwiftUI'yi iOS 13'te kullanmak mümkündür. Lütfen stackoverflow.com/a/58372597/840742'yi
Renatus

13

İPad'i değil, iPhone'u desteklemek için çekim yapıyorsanız, muhtemelen çoğu kullanıcının 12-18 ay içinde iOS 13'e geçmesini bekleyebilirsiniz (çıkış tarihinden itibaren). Belki% 85-90? (Sanırım Apple, bu noktada hala insanların% 15'inin iOS 12 kullanmadığını söyledi) Bu, SwiftUI uygulamalarını hemen dağıtamayacağınız veya birçok kullanıcıyı yabancılaştırma riskiyle karşı karşıya kalmayacağınız oldukça uzun bir süre olsa da.

Ayrıca, diğer% 10-15'in ne olduğuna bağlı olarak, bu sizin için masada kalan birçok kullanıcı (ve $$) anlamına gelebilir.

Siz de iPad'i destekliyorsanız, bu daha zordur çünkü insanlar iPad'lerini sık sık yükseltmezler. Sadece 10.3.3'e sahip olan ve artık yükseltilemeyen 3. ve 4. nesil iPad'lerin yanı sıra hala vahşi ortamda çok sayıda iPad 2 var. İnsanlar, mükemmel bir şekilde çalıştığında, yeni bir iPad için ayağa kalkıp 400-1000 $ arasında ödeme yapmayacaklar.

Uygulamayı güncellemek, daha iyi hale getirmek, hataları düzeltmek için her zaman yer ve ihtiyaç vardır, bunlar iOS 13 ile hiçbir ilgisi yoktur. Örneğin, daha önce bilmediğiniz bir hatayı bulmak birçok kullanıcıyı mutsuz eder. . en son iOS sürümünde değil. ve birçok geliştirme mağazasının desteklediği kurumsal / kurumsal müşterilerden bahsetmedik bile. bu alandaki çeşitli nedenlerden dolayı iOS güncellemelerinde çok daha fazla geri itme var.

Bu yüzden, iOS 13 ve SwiftUI (ki bu harika olduğu için kesinlikle yapmalısınız) hakkında heyecanlanmadan önce, gerçek dünyada, Silikon Vadisi'nin dışında, bu, ortalama bir tüketicinin beklediği şeyle tam olarak örtüşmeyecek ve destek vermeniz gerekecek daha eski cihazlar ve buna ihtiyaç var çünkü çok fazla insan var çünkü yabancılaştırıyor olabilirsiniz.


1
"Desteklenmeyen" iPhone kullanan birkaç kişi tanıyorum, bu nedenle en son iOS sürümü için asla% 100'e ulaşamayacaksınız. Şu anki telefonum öldüğünde bir sonraki telefonum hakkında uzun uzun düşüneceğimi biliyorum
Gavin

@cspam Varsayımlarınız belki doğru olsa da soruya cevap vermiyorlar.
user1892364

iOS 12, cihazların% 10'undan fazlası için desteği bırakmadı, bu nedenle iOS 13 için aynı benimsenme oranlarını
Casper Zandbergen

SwiftUI'nin eski cihazları desteklemesi gerekecek ve buna ihtiyaç duyacak çünkü çok fazla insan var çünkü yabancılaştırıyor olacaksınız! thumb
Trevor

9

Apple belgelerine göre maalesef yalnızca iOS 13'ten itibaren kullanılabilir.

https://developer.apple.com/documentation/swiftui/


Tüm bağlantılı belgelerin söylediği, iOS 13 SDK (yani Xcode 11) kullanmanız gerektiğidir. Bu, cihazın desteklenen minimum iOS sürümünün iOS 13 olması gerektiği anlamına gelmez ... eski iOS sürümlerini iyi destekleyebilirsiniz ...
pullu


6

yalnızca ios 13 veya sonraki sürümler için çalışır

yine de SwiftUIkullanarak kodunuzu ekleyebilirsiniz

@available(iOS 13.0, *)

Hala Xcode 11'in altında Xcode kullanıyorsanız ve SwiftUI kodunuz varsa,

#if canImport(SwiftUI)
...
#endif

Bu, Xcode 11'in altında Xcode ile derleme yaparken sorunu çözebilir


4

Herkesin söylediği gibi, eski iOS sürümleriyle geriye doğru uyumlu olmayacak. Ancak Apple'ın sürekli olarak en son iOS'larının yüksek bir yükleme tabanına sahip olduğu ve ayrıca iOS 13'ün iPhone 6S veya sonraki bir sürümünü, iPad Air 2 veya sonraki bir sürümünü, yeni iPad mini 4 ve iPhone SE'yi gerektirdiği göz önüne alındığında. Kullanıcıların büyük çoğunluğu iOS 13 yükleyebilecek ve sevimli SwiftUI uygulamalarının keyfini çıkarabilecek.


3
İPad'im iOS 13 için kesinti yapmıyor ve hala güçlüydü ve bir süre (umarım) burada zevk aldığım / ihtiyaç duyduğum uygulamaların eski cihazları sürüklemeyeceğini umarak değiştirilmeyecek.
Gavin

3

Benden önceki herkesin bahsettiği gibi, iOS 13 veya sonraki bir sürümünü gerektireceği çok açık. Ancak yeni bir iOS geliştiricisi olarak, SwiftUI'yi UIKit'e kıyasla ne ölçüde benimsemem gerektiği konusunda endişeliydim. UIKit ile zaten bazı küçük projeler inşa ettim ve onunla daha ileri bir yere gittim.

Ancak SwiftUI başladığında, ikisi arasında nasıl birleşilir. Aşağıdaki bağlantıdaki makale her şeyi bağlama oturtur: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both

Şimdi tek endişem, Xcode 11 ile bir Xcode projesinin hem Storyboard'ları hem de SwiftUI'yi birleştiremediğini fark ettim.


3

Maalesef hayır, SwiftUI'ye yalnızca iOS 13 ve üzeri sürümlerde izin verilir. İOS 13 çerçevesinde tanıtıldı. İOS 13'ten önce, her şey Obj-C çerçevesi (Swift dahil) kullanılarak oluşturuldu.

Geliştirici belgelerinin sağ tarafında iOS, macOS, tvOS, watchOS vb. Desteklenen sürümleri gösterir.

https://developer.apple.com/documentation/swiftui/

Bu yardımcı olur umarım!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.