SwiftUIで作成されたアプリがある場合、iOS 13より前のiOSで動作しますか?
SwiftUIで作成されたアプリがある場合、iOS 13より前のiOSで動作しますか?
回答:
Xcode 11でチェックアウトしたところ、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 }
}
すべてのライブラリはすでにiOS 13以降で注釈が付けられているので、私はそうは思いません。
また、ドキュメントでは、Appleはサポートされているバージョンについて明記しています。
SwiftUIおよびCombineは、Swift 5.1でOpaque-Return-Typesを使用します。Opaque -Return-Types(他の機能とともに)はSwift 5.1で実装されているため、その実装の性質上、Swift 5.0にデプロイできません(DSLとは異なります)またはProperty-Wrappers)、そしてiOS 13はOS にSwift 5.1ランタイムを含む最も初期のiOS SDKであるため、質問に対する答えは「いいえ」であり、SwiftUIとCombineは以前のバージョンのiOSでは使用できません。
それ以外の場合は、AppleはSwift 5.1ランタイム(または将来のリリース)を以前のSwiftバージョンと同じようにアプリケーションにバンドルする方法を提供しますが、これによりApp-sizeが増加し、システム全体にオーバーヘッドが再び追加されるため、これは疑わしいでしょう起こります。
Swift 5.1はまだリリースされておらず、不透明な戻り値の型、DSL、propertyDelegate(propertyWrapperとしてWWDCで導入)などのSwiftUI
機能を使用します。これらはSwift 5.1でのみ使用できます。Swift 5はバイナリで安定しているため、Xcode11内に埋め込まれたswift-frameworksを使用することはできなかったと思います。したがって、Swift 5.1がリリースされるまで、Cocoaのコアにこれらの機能を再実装し、iOS13 +として使用可能とマークしました。
私の仮定は、Ordered Collection DiffingとDSLがSwift 5.1で利用可能になる予定であり、XcodeやAppleのエコシステムとは相関がないという事実に基づいていますが、それらもとマークされてい@available(iOS13,...)
ます。これは、Swift 5.1機能を使用してすべてをiOSの可用性属性でマークする必要があったことを意味します。スウィフト5.1がリリースされるが、我々はについて確認することはできません一度それらのいくつかは削除されますSwiftUI
とCombine
、Appleはそう伝えていない限り。これは、DSLの提案でも言及されています。
実装:PR。Xcode開発者プレビューの実装では、ここで説明する変換よりもやや単純な変換を使用していることに注意してください。リンクされたPRはプレビューでの実装を反映していますが、この提案に合わせて活発に開発中です。
そのため、Swift 5.1がリリースされると、後方非互換性の制限が解除される可能性がありますが、それは実際にAppleチームが明確にする必要があります。
いいえ。SwiftUIには、iOS 13以降、macOS 10.15以降、tvOS 13以降、またはwatchOS 6以降の展開ターゲットが必要です。フレームワークには、古いバージョンのOSには存在しない多くの新しいタイプが含まれています。
iPadではなくiPhoneをサポートするために撮影している場合、ほとんどのユーザーが12〜18か月以内にiOS 13にアップグレードすることを期待できます(リリース日以降)。たぶん85-90%?(現時点では、AppleはiOS 12を使用していない人の15%がまだいると言っています)SwiftUIアプリをすぐに展開することができず、多くのユーザーを疎外するリスクがあるとは言えません。
また、残りの10〜15%によっては、多くのユーザー(および$$)がテーブルに残ったことを意味する場合があります。
iPadもサポートしている場合は、人々がiPadを頻繁にアップグレードしないため、より注意が必要です。多くのiPad 2と、第3世代および第4世代のiPadがまだ一般に出回っていて、10.3.3しかなく、もうアップグレードできません。新しいiPadが完璧に機能する場合、人々は立ち上がって新しいiPadに400ドルから1,000ドルを支払うつもりはありません。
常にiOS 13とは何の関係もない、アプリを更新して改善するバグを修正する余地とニーズがあります。つまり、以前は知らなかったバグを見つけて、多くのユーザーを不満にしています。 。最新のiOSバージョンではありません。また、多くの開発ショップがサポートしている企業/企業の顧客についてさえ話していません。その領域のさまざまな理由により、iOSの更新に対する多くの反発があります。
ですから、iOS 13とSwiftUI(本当に素晴らしいので絶対にすべきです)に興奮する前に、シリコンバレー以外の現実の世界に戻ると、平均的な消費者が期待するものと完全に一致するわけではなく、サポートする必要があります。古いデバイスを使用する必要があります。疎外される人が多すぎるためです。
Appleのドキュメントによると、残念ながらiOS 13以降でしか利用できません。
iOS 13以降に対応しています。ここにそのドキュメントへのリンクがあります。
https://developer.apple.com/documentation/swiftui/
Xcode 10でもサポートしていません。2019年6月3日現在、ベータ版のXcode 11を使用する必要があります。 https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
誰もが言ったように、それは古いiOSバージョンとの後方互換性はありません。しかし、Appleは常に最新のiOSの高いインストールベースを持っていること、およびiOS 13にはiPhone 6S以降、iPad Air 2以降、新しいiPad mini 4およびiPhone SEが必要であることを考えると、大多数のユーザーはiOS 13をインストールして素敵なSwiftUIアプリを楽しむことができます。
私の前のすべての人が言ったように、iOS 13以降が必要になることは明らかです。しかし、私は新しいiOS開発者として、UIKitと比較してSwiftUIをどの程度採用すべきかについて心配していました。私はすでに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/
お役に立てれば!