Se ho un'app realizzata con SwiftUI, funzionerà per iOS inferiore a iOS 13?
Se ho un'app realizzata con SwiftUI, funzionerà per iOS inferiore a iOS 13?
Risposte:
L'ho appena verificato in Xcode 11 e posso confermare che non sarà compatibile con le versioni precedenti, come si può vedere nell'implementazione di SwiftUI View
:
/// 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 }
}
Non credo, perché tutte le librerie sono già annotate per iOS 13 o versioni successive.
Inoltre, nella documentazione , Apple menziona chiaramente le versioni supportate:
SwiftUI e Combine usano Opaque-Return-Types in Swift 5.1 e poiché Opaque-Return-Types (insieme ad altre funzionalità) sono implementati in Swift 5.1 e data la natura della loro implementazione, non possono essere nuovamente distribuiti su Swift 5.0 (a differenza di DSL o Property-Wrappers ) e poiché iOS 13 è il primo SDK iOS che contiene il runtime Swift 5.1 nel sistema operativo, la risposta alla domanda è no e SwiftUI e Combine non possono essere utilizzati nelle versioni precedenti di iOS.
A meno che Apple non fornisca un modo per raggruppare il runtime di Swift 5.1 (o le versioni future) con l'applicazione come faceva con le versioni precedenti di Swift, ma poiché aumenterà le dimensioni dell'app e aggiungerà di nuovo un sovraccarico all'intero sistema, dubito che lo farà mai accaduto.
Swift 5.1 non è ancora stato rilasciato e SwiftUI
utilizza funzionalità come tipi di restituzione opachi , DSL , propertyDelegate (introdotto in WWDC come propertyWrapper ) e così via, che saranno disponibili solo in Swift 5.1. Poiché Swift 5 è binario stabile, immagino che non fosse possibile utilizzare i framework swift incorporati all'interno di Xcode11, quindi hanno reimplementato queste funzionalità nel core di Cocoa e le hanno contrassegnate come iOS13 + disponibili fino al rilascio di Swift 5.1.
Le mie ipotesi si basano sul fatto che, Ordered Collection Diffing e DSL saranno disponibili in Swift 5.1 e non avranno correlazioni con Xcode o l'ecosistema di Apple, ma sono anche contrassegnati come @available(iOS13,...)
. Ciò significa che dovevano contrassegnare tutto utilizzando le funzionalità di Swift 5.1 con l'attributo di disponibilità di iOS. Alcuni di essi verranno rimossi una volta rilasciato Swift 5.1, ma non possiamo esserne sicuri SwiftUI
ea Combine
meno che Apple non dica diversamente. Questo è menzionato anche nella proposta di DSL :
Implementazione: PR . Si noti che l'implementazione nell'anteprima per sviluppatori Xcode utilizza una trasformazione un po 'più semplice di quella descritta qui. Il PR collegato riflette l'implementazione nell'anteprima ma è in fase di sviluppo attivo per corrispondere a questa proposta.
Quindi la limitazione dell'incompatibilità con le versioni precedenti potrebbe essere revocata quando Swift 5.1 verrà rilasciato, ma ha davvero bisogno di essere chiarito dal team Apple .
No. SwiftUI richiede un target di distribuzione di iOS 13 o successivo, macOS 10.15 o successivo, tvOS 13 o successivo o watchOS 6 o successivo. Il framework contiene molti nuovi tipi che non esistono nelle versioni precedenti dei sistemi operativi.
Se stai scattando per supportare iPhone e non iPad, potresti probabilmente aspettarti che la maggior parte degli utenti effettuerà l'aggiornamento a iOS 13 entro 12-18 mesi (a partire dalla data di rilascio). Forse l'85-90%? (Penso che Apple abbia detto che a questo punto c'è ancora il 15% di persone non su iOS 12) È ancora un bel po 'di tempo, anche se non sarai in grado di distribuire le app SwiftUI immediatamente o rischierai di alienare molti utenti.
Inoltre, a seconda di quale sia il restante 10-15%, ciò potrebbe significare molti utenti (e $$) per te rimasti sul tavolo.
Se stai supportando anche l'iPad, è più complicato perché le persone non aggiornano i loro iPad così spesso. Ci sono molti iPad 2 insieme a iPad di terza e quarta generazione ancora in circolazione, che hanno solo 10.3.3 e non possono più essere aggiornati. Le persone non si alzeranno e pagheranno tra $ 400 e $ 1.000 per un nuovo iPad quando il loro funziona perfettamente.
C'è sempre spazio e necessità di aggiornare l'app, migliorarla, correggere bug, che non hanno necessariamente nulla a che fare con iOS 13. ovvero trovare un bug che prima non conoscevi rende insoddisfatti molti utenti. non sull'ultima versione di iOS. e non abbiamo nemmeno parlato di clienti aziendali / aziendali supportati da molti negozi di sviluppo. c'è molto più pushback sugli aggiornamenti iOS per vari motivi in quell'area.
Quindi, prima di essere tutti entusiasti di iOS 13 e SwiftUI (che dovresti assolutamente perché è fantastico), nel mondo reale, al di fuori della Silicon Valley, questo non si allineerà esattamente con ciò che il consumatore medio si aspetta e dovrai supportare dispositivi più vecchi e ne hai bisogno perché ci sono troppe persone che potresti alienare.
Sulla base della documentazione Apple è disponibile solo a partire da iOS 13, sfortunatamente.
È compatibile con iOS 13+. Ecco il link alla sua documentazione.
https://developer.apple.com/documentation/swiftui/
Anche Xcode 10 non lo supporta. È necessario utilizzare Xcode 11, che è in beta a partire dal (3 giugno 2019). https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
funziona solo per ios 13 o versioni successive
puoi comunque allegare il tuo SwiftUI
codice usando
@available(iOS 13.0, *)
se usi ancora Xcode sotto Xcode 11 e hai il codice SwiftUI, puoi avvolgerlo con
#if canImport(SwiftUI)
...
#endif
Questo può risolvere il problema durante la compilazione con Xcode sotto Xcode 11
Come tutti hanno detto, non sarà compatibile con le versioni precedenti di iOS. Ma dato che Apple ha costantemente una base di installazione elevata del suo ultimo iOS, e anche dato che iOS 13 richiede iPhone 6S o successivo, iPad Air 2 o successivo, il nuovo iPad mini 4 e iPhone SE. La stragrande maggioranza degli utenti sarà in grado di installare iOS 13 e godere di adorabili app SwiftUI.
Come tutte le persone prima di me hanno menzionato, è molto chiaro che richiederà iOS 13 o versioni successive. Ma come nuovo sviluppatore iOS, ero preoccupato di quanto avrei dovuto adottare SwiftUI rispetto a UIKit. Ho già realizzato alcuni piccoli progetti con UIKit e sono andato in qualche modo avanzato con esso.
Ma quando SwiftUI è iniziato, come combinare tra di loro. L'articolo nel seguente link mette tutto nel contesto: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
La mia unica preoccupazione ora è che ho notato con Xcode 11 che un progetto Xcode non può combinare sia Storyboard che SwiftUI.
Purtroppo no, SwiftUI è consentito solo in iOS 13 e versioni successive. È stato introdotto nel framework iOS 13. Prima di iOS 13, tutto veniva creato utilizzando il framework Obj-C (incluso Swift).
Sul lato destro della documentazione dello sviluppatore, mostra le versioni supportate di iOS, macOS, tvOS, watchOS, ecc.
https://developer.apple.com/documentation/swiftui/
Spero che questo ti aiuti!