Jeśli mam aplikację utworzoną za pomocą SwiftUI, czy będzie działać na iOS poniżej iOS 13?
Jeśli mam aplikację utworzoną za pomocą SwiftUI, czy będzie działać na iOS poniżej iOS 13?
Odpowiedzi:
Właśnie sprawdziłem to w Xcode 11 i mogę potwierdzić, że nie będzie kompatybilny wstecz, jak widać w View
implementacji SwiftUI :
/// 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 }
}
Nie sądzę, ponieważ wszystkie biblioteki mają już adnotacje dla iOS 13 lub nowszego.
Ponadto w dokumentacji Apple wyraźnie wymienia obsługiwane wersje:
SwiftUI i Combine używają Opaque-Return-Types w Swift 5.1, a ponieważ Opaque-Return-Types (wraz z innymi funkcjami) są zaimplementowane w Swift 5.1 i ze względu na charakter ich implementacji nie mogą być ponownie wdrożone w Swift 5.0 (w przeciwieństwie do DSL lub Property-Wrappers ), a ponieważ iOS 13 jest najwcześniejszym iOS SDK, który zawiera środowisko uruchomieniowe Swift 5.1 w systemie operacyjnym, więc odpowiedź na pytanie brzmi: nie, a SwiftUI i Combine nie mogą być używane we wcześniejszych wersjach iOS.
Chyba że Apple zapewnia sposób na dołączenie Swift 5.1 środowiska (lub przyszłych wersji) z aplikacją, tak jak w przypadku wcześniejszych wersji Swift, ale ponieważ zwiększy to rozmiar aplikacji i ponownie zwiększy obciążenie całego systemu, wątpię, aby tak się stało kiedykolwiek się zdarzyło.
Swift 5.1 nie został jeszcze wydany i SwiftUI
wykorzystuje funkcje, takie jak nieprzezroczyste typy zwrotów , DSL , propertyDelegate (wprowadzone w WWDC jako propertyWrapper ) itp., Które będą dostępne tylko w Swift 5.1. Ponieważ Swift 5 jest stabilny binarnie, myślę, że nie było możliwe użycie wbudowanych ram Swift wewnątrz Xcode11, dlatego ponownie zaimplementowali te funkcje w rdzeniu Cocoa i oznaczyli je jako iOS13 + dostępne do czasu wydania Swift 5.1.
Moje założenia opierają się na fakcie, że Ordered Collection Diffing i DSL będą dostępne w Swift 5.1 i nie będą miały korelacji z Xcode ani ekosystemem Apple, ale są również oznaczone jako @available(iOS13,...)
. Oznacza to, że musieli oznaczyć wszystko za pomocą funkcji Swift 5.1 atrybutem dostępności iOS. Niektóre z nich zostaną usunięte po wydaniu Swift 5.1, ale nie możemy być tego pewni SwiftUI
i Combine
chyba że Apple powie inaczej. Jest to również wspomniane w propozycji DSL :
Realizacja: PR . Zwróć uwagę, że implementacja w podglądzie programisty Xcode wykorzystuje nieco prostszą transformację niż ta opisana tutaj. Połączone żądanie PR odzwierciedla implementację w podglądzie, ale jest w trakcie opracowywania w celu dopasowania do tej propozycji.
Dlatego ograniczenie wstecznej niekompatybilności może zostać zniesione po wydaniu Swift 5.1, ale naprawdę musi zostać wyjaśnione przez zespół Apple .
Nie. SwiftUI wymaga docelowego wdrożenia systemu iOS 13 lub nowszego, macOS 10.15 lub nowszego, tvOS 13 lub nowszego albo watchOS 6 lub nowszego. Framework zawiera wiele nowych typów, które nie istnieją w starszych wersjach systemów operacyjnych.
Jeśli kręcisz do obsługi iPhone'a, a nie iPada, prawdopodobnie możesz oczekiwać, że większość użytkowników dokona aktualizacji do iOS 13 w ciągu 12-18 miesięcy (począwszy od daty premiery). Może 85-90%? (Myślę, że Apple powiedział, że w tym momencie nadal jest 15% ludzi, którzy nie korzystają z iOS 12) .To jeszcze sporo czasu, gdy nie będziesz w stanie od razu wdrożyć aplikacji SwiftUI, bo inaczej ryzykujesz zrazić wielu użytkowników.
W zależności od tego, jakie jest pozostałe 10-15%, może to oznaczać, że na stole pozostało wielu użytkowników (i $$).
Jeśli wspierasz również iPada, jest to trudniejsze, ponieważ ludzie nie aktualizują swoich iPadów tak często. Istnieje wiele iPadów 2 wraz z iPadami trzeciej i czwartej generacji, które wciąż są dostępne na wolności, które mają tylko 10.3.3 i nie mogą już być aktualizowane. Ludzie po prostu nie zamierzają wstawać i płacić między 400 a 1000 USD za nowego iPada, gdy ich działa idealnie.
Zawsze jest miejsce i potrzeba aktualizacji aplikacji, ulepszania jej, naprawiania błędów, które niekoniecznie mają coś wspólnego z iOS 13. tj. Znalezienie błędu, o którym wcześniej nie wiedziałeś, co sprawia, że wielu użytkowników jest niezadowolonych. . nie w najnowszej wersji iOS. i nawet nie rozmawialiśmy o klientach korporacyjnych / korporacyjnych, których obsługuje wiele sklepów deweloperskich. jest dużo więcej odpowiedzi na aktualizacje iOS z różnych powodów w tym obszarze.
Tak więc, zanim zaczniesz się ekscytować iOS 13 i SwiftUI (które absolutnie powinieneś, ponieważ jest niesamowity), w prawdziwym świecie, poza Doliną Krzemową, nie będzie to dokładnie zgodne z tym, czego oczekuje przeciętny konsument i będziesz musiał wesprzeć starsze urządzenia i trzeba, ponieważ jest tam zbyt wielu ludzi, których zraziłbyś.
Bazując na dokumentacji Apple, jest on dostępny niestety dopiero od iOS 13.
Jest kompatybilny z iOS 13+. Tutaj jest link do jego dokumentacji.
https://developer.apple.com/documentation/swiftui/
Nawet Xcode 10 go nie obsługuje. Musisz użyć Xcode 11, który jest w wersji beta od (3 czerwca 2019 r.). https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
działa tylko na iOS 13 lub nowszym
nadal możesz dołączyć swój SwiftUI
kod za pomocą
@available(iOS 13.0, *)
jeśli nadal używasz Xcode poniżej Xcode 11 i masz kod SwiftUI, możesz go opakować
#if canImport(SwiftUI)
...
#endif
Może to rozwiązać problem podczas kompilowania z Xcode poniżej Xcode 11
Jak wszyscy powiedzieli, nie będzie kompatybilny wstecz ze starszymi wersjami iOS. Biorąc jednak pod uwagę, że Apple konsekwentnie ma wysoką bazę instalacyjną swojego najnowszego iOS, a także biorąc pod uwagę, że iOS 13 wymaga iPhone'a 6S lub nowszego, iPada Air 2 lub nowszego, nowego iPada mini 4 i iPhone'a SE. Zdecydowana większość użytkowników będzie mogła zainstalować iOS 13 i cieszyć się pięknymi aplikacjami SwiftUI.
Jak wszyscy wcześniej wspomnieli, jest bardzo jasne, że będzie to wymagało iOS 13 lub nowszego. Ale jako nowy programista iOS martwiłem się, do jakiego stopnia powinienem zaadaptować SwiftUI w porównaniu z UIKit. Zbudowałem już kilka małych projektów z UIKit i poszedłem z nim gdzieś zaawansowanym.
Ale gdy rozpoczął się SwiftUI, jak połączyć między nimi. Artykuł pod poniższym linkiem umieszcza wszystko w kontekście: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
Moim jedynym zmartwieniem jest to, że zauważyłem w Xcode 11, że projekt Xcode nie może łączyć scenorysów i SwiftUI.
Niestety nie, SwiftUI jest dozwolone tylko w iOS 13 i nowszych. Został wprowadzony we frameworku iOS 13. Przed iOS 13 wszystko było budowane przy użyciu frameworka Obj-C (w tym Swift).
Po prawej stronie dokumentacji deweloperskiej pokazuje obsługiwane wersje iOS, macOS, tvOS, watchOS itp.
https://developer.apple.com/documentation/swiftui/
Mam nadzieję że to pomoże!