Czy ktoś wie, dlaczego moja odpowiedź została usunięta przez @ Jean-François Fabre
CrazyPro007
10
NIE, SwiftUI nie będzie działać z iOS 12.xi starszymi.
ystack
Odpowiedzi:
90
Właśnie sprawdziłem to w Xcode 11 i mogę potwierdzić, że nie będzie kompatybilny wstecz, jak widać w Viewimplementacji 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(iOS13.0,OSX10.15, tvOS 13.0,watchOS6.0,*)publicprotocolView:_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.
associatedtypeBody:View/// Declares the content and behavior of this view.
var body:Self.Body{get}}
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.
To może być kompatybilny wstecz
Swift 5.1 nie został jeszcze wydany i SwiftUIwykorzystuje 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 SwiftUIi Combinechyba ż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 .
Czy to ma jakieś aktualizacje? PR, o którym wspomniałeś, został połączony, Swift 5.1 został wydany
użytkownik158
@ user158 Właśnie zaktualizowałem odpowiedź i opisałem, dlaczego ta funkcja nie może być obsługiwana.
farzadshbfn
15
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ś.
Znam wiele osób na „nieobsługiwanych” iPhone'ach, więc najnowsza wersja iOS nigdy nie osiągnie 100%. Wiem, że będę długo i intensywnie myślał o moim następnym telefonie, gdy mój obecny umrze
Gavin,
@cspam Chociaż Twoje przypuszczenia mogą być słuszne, nie odpowiadają one na pytanie.
user1892364
iOS 12 nie stracił wsparcia dla ponad 10% urządzeń, więc trudno powiedzieć, czy możemy spodziewać się takich samych wskaźników adopcji dla iOS 13.
Casper Zandbergen,
SwiftUI będzie musiał obsługiwać starsze urządzenia i będzie musiał, ponieważ jest tam zbyt wielu ludzi, których możesz zrazić! kciuk
Trevor
9
Bazując na dokumentacji Apple, jest on dostępny niestety dopiero od iOS 13.
Cała ta połączona dokumentacja mówi, że musisz użyć zestawu SDK iOS 13 (tj. Xcode 11). Nie oznacza to, że minimalną obsługiwaną wersją iOS urządzenia musi być iOS 13 ... starsze wersje iOS można obsługiwać w porządku ...
łuskowaty
9
Jest kompatybilny z iOS 13+. Tutaj jest link do jego dokumentacji.
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.
Mój iPad nie działa na iOS 13, a biorąc pod uwagę, że nadal działa i nie zostanie wymieniony na jakiś czas (mam nadzieję), mając nadzieję, że aplikacje, które lubię / potrzebuję, nie rzucają starszych urządzeń.
Gavin
3
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.
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.
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 :źródło
Nie sądzę, ponieważ wszystkie biblioteki mają już adnotacje dla iOS 13 lub nowszego.
Ponadto w dokumentacji Apple wyraźnie wymienia obsługiwane wersje:
źródło
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.
To może być kompatybilny wsteczSwift 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 pewniSwiftUI
iCombine
chyba że Apple powie inaczej. Jest to również wspomniane w propozycji DSL :Dlatego ograniczenie wstecznej niekompatybilności może zostać zniesione po wydaniu Swift 5.1, ale naprawdę musi zostać wyjaśnione przez zespół Apple .źródło
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.
źródło
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ś.
źródło
Bazując na dokumentacji Apple, jest on dostępny niestety dopiero od iOS 13.
https://developer.apple.com/documentation/swiftui/
źródło
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
źródło
działa tylko na iOS 13 lub nowszym
nadal możesz dołączyć swój
SwiftUI
kod za pomocąjeśli nadal używasz Xcode poniżej Xcode 11 i masz kod SwiftUI, możesz go opakować
Może to rozwiązać problem podczas kompilowania z Xcode poniżej Xcode 11
źródło
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.
źródło
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.
źródło
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!
źródło