Якщо у мене є додаток, створене за допомогою SwiftUI, чи буде він працювати для iOS нижче iOS 13?
Якщо у мене є додаток, створене за допомогою SwiftUI, чи буде він працювати для iOS нижче iOS 13?
Відповіді:
Щойно я перевірив це в Xcode 11 і можу підтвердити, що він не буде сумісним назад, як це можна побачити в View
реалізації 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 }
}
Я не думаю, що тому, що всі бібліотеки вже помічені для iOS 13 або новішої версії.
Також у документації Apple чітко згадує підтримувані версії:
SwiftUI та Combine використовують типи Opaque-Return у Swift 5.1 та оскільки типи Opaque-Return (поряд з іншими функціями) реалізовані у Swift 5.1 і через характер їх реалізації вони не можуть бути знову розгорнуті до Swift 5.0 (на відміну від DSL або Properties-Wrappers ), а тому, що iOS 13 - найдавніший SDK для iOS, який містить Swift 5.1 в режимі роботи, тому відповідь на питання - ні і SwiftUI та Combine не можна використовувати в більш ранніх версіях iOS.
Якщо тільки Apple не надає спосіб зв'язати Swift 5.1 час виконання (або майбутні випуски) за допомогою додатка, як це було раніше у версії Swift, але оскільки він збільшить розмір додатка і знову додасть накладні витрати на всю систему, я сумніваюся, що це буде коли-небудь трапиться.
Swift 5.1 ще не випущено та SwiftUI
використовує такі функції, як непрозорі типи повернення , DSL , propertyDelegate (введені в WWDC як propertyWrapper ) та ін., Які будуть доступні лише у Swift 5.1. Оскільки Swift 5 є бінарним стабільним, я думаю, не вдалося використати вбудовані швидкі рамки всередині Xcode11, отже, вони повторно реалізували ці функції в ядрі Cocoa та позначили їх як iOS13 +, доступні до виходу Swift 5.1.
Мої припущення засновані на тому, що, Orders Collection Diffing та DSL будуть доступні в Swift 5.1 і не мають кореляції з екосистемою Xcode або Apple, але вони також позначені як@available(iOS13,...)
. Це означає, що їм довелося позначати все за допомогою функцій Swift 5.1 атрибутом доступності iOS. Деякі з них будуть знятіяк тільки Swift 5,1 звільняється, але ми не можемо бути впевненіSwiftUI
іCombine
якщо Appleкаже інакше. Про це також йдеться упропозиції DSL :
Впровадження: PR . Зауважте, що реалізація в попередньому перегляді розробника Xcode використовує дещо простішу трансформацію, ніж описана тут. Пов'язаний PR відображає реалізацію в попередньому перегляді, але зараз він активно розробляється, щоб відповідати цій пропозиції.
Тож обмеження відсталої несумісності може бути зняте, коли Swift 5.1 звільниться, але це дійсно потрібно з’ясувати команді Apple .
Ні. SwiftUI вимагає цілі розгортання iOS 13 або новішої версії, macOS 10.15 або новішої версії, tvOS 13 або новішої версії, або watchOS 6 або новішої версії. Рамка містить багато нових типів, які не існують на старих версіях ОС.
Якщо ви працюєте на підтримку iPhone, а не iPad, ви, напевно, могли очікувати, що більшість користувачів перейдуть на iOS 13 протягом 12-18 місяців (починаючи з дати випуску). Може, 85-90%? (Я думаю, що в цей момент Apple сказала, що це ще 15% людей, які не знаходяться на iOS 12). Це ще досить довгий час, хоча там, де ви не збираєтеся відразу розгортати додатки SwiftUI, інакше ризикуєте відчужувати багато користувачів.
Також залежно від того, що є інші 10-15%, це може означати для вас багато користувачів (і $$), які ви залишили на столі.
Якщо ви також підтримуєте iPad, тоді його складніше, оскільки люди не оновлюють iPad так часто. Є багато iPad 2 разом із iPad 3-го і 4-го поколінь, які все ще знаходяться в дикій природі, у яких є лише 10.3.3 і більше не вдається оновити. Люди просто не збираються вставати і платити від 400 до 1000 доларів за новий iPad, коли їхня робота ідеально працює.
Завжди є можливість і оновити додаток, покращити його, виправити помилки, які не обов'язково мають нічого спільного з iOS 13. Тобто знайти помилку, про яку ви раніше не знали, зробивши багато користувачів незадоволеними. . не в останній версії iOS. і ми навіть не говоримо про корпоративних / корпоративних клієнтів, які підтримують багато магазинів розробників. Є набагато більше відкази оновлень iOS з різних причин у цій області.
Тож перш ніж ви захоплюєтеся iOS 13 та SwiftUI (що вам абсолютно слід, бо це дивовижно), назад у реальному світі, поза межами Силіконової долини, це не зовсім узгоджується з тим, що очікує середній споживач, і вам потрібно буде підтримати старі пристрої, і це потрібно, тому що це занадто багато людей, яких ви відчужуєте.
На основі документації Apple, на жаль, вона доступна лише з iOS 13.
Він сумісний з iOS 13+. Ось посилання на його документацію.
https://developer.apple.com/documentation/swiftui/
Навіть Xcode 10 не підтримує його. Вам потрібно використовувати Xcode 11, який знаходиться в бета-версії станом на (3 червня 2019 року). https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
працює лише для ios 13 або новішої версії
ви все одно можете прикріпити свій SwiftUI
код за допомогою
@available(iOS 13.0, *)
якщо ви все ще використовуєте Xcode нижче Xcode 11 і у вас є код SwiftUI, ви можете його обернути
#if canImport(SwiftUI)
...
#endif
Це може вирішити проблему під час компіляції з Xcode нижче Xcode 11
Як усі казали, це не буде сумісним із старими версіями iOS. Але з огляду на те, що Apple постійно має високу базу встановлення своїх останніх iOS, а також враховуючи, що для iOS 13 потрібен iPhone 6S або новішої версії, iPad Air 2 або пізнішої версії, новий iPad mini 4 та iPhone SE. Переважна більшість користувачів зможе встановити iOS 13 та насолоджуватися прекрасними програмами SwiftUI.
Як уже згадували всі люди до мене, дуже ясно, що для нього знадобиться iOS 13 або пізнішої версії. Але як новий розробник iOS, я переживав, наскільки я повинен прийняти SwiftUI порівняно з UIKit. Я вже створив кілька невеликих проектів з UIKit і пішов кудись вдосконалено.
Але як SwiftUI почав, як їх поєднувати. Стаття в наступному посиланні ставить все в контекст: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
Зараз я хвилююся лише тим, що я помітив із Xcode 11, що проект Xcode не може поєднувати і Storyboards, і SwiftUI
На жаль ні, SwiftUI дозволений лише в iOS 13 і вище. Він був представлений в iOS 13. До iOS 13 все було побудовано за допомогою Obj-C фреймворку (включаючи Swift).
У правій частині документації на розробник зображено підтримувані версії iOS, macOS, tvOS, watchOS тощо.
https://developer.apple.com/documentation/swiftui/
Сподіваюся, це допомагає!