web-dev-qa-db-ja.com

SwiftUIはiOS 12.x以前と後方互換性がありますか?

SwiftUIで作成したアプリがある場合、iOS 13以下のiOSでも動作しますか?

103
Ted

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 }
}
70
fredpi

私はそうは思いません。すべてのライブラリにはiOS 13以降の注釈が既に付いているからです。

また、 documentation 、Appleにはサポートされているバージョンが明記されています:

  • iOS13.0 +ベータ
  • macOS10.15 +ベータ
  • tvOS 13.0+ベータ
  • watchOS 6.0+ベータ

enter image description here

25

SwiftUIおよびCombineuse Opaque-Return-Typesin Swift 5.1以降。Opaque-Return-Types(他の機能と一緒に)はSwift 5.1および実装の性質により、[〜#〜] dsl [〜#〜]またはProperty-Wrappersto Swift 5.0、 iOS 13はSwift 5.1OSのランタイムを含む唯一のiOS SDKであるため、質問に対する答えはnoおよびSwiftUIおよびCombineは使用できませんiOSの以前のバージョン。

AppleがSwift 5.1ランタイム(または将来のリリース)を以前のSwiftバージョンで使用したようなアプリケーションにバンドルする方法を提供しない限り、アプリ全体のサイズを変更し、システム全体にオーバーヘッドを追加します。これが起こることはないと思います。

それはかもしれない後方互換性がある

Swift 5.1はまだリリースされておらず、SwiftUI不透明な戻り値の型[〜#〜] dsl [〜#〜] などの機能を使用しますpropertyDelegate(WWDCにpropertyWrapperとして導入)など、利用可能になるonlyin Swift 5.1。以降Swift 5はバイナリ安定版です。組み込みのSwiftフレームワークをXcode11内で使用することはできなかったため、Cocoaのコアでこれらの機能を再実装し、Swift 5.1がリリースされるまでiOS13 +としてマークしました。

私の仮定は、Ordered Collection Diffingおよび[〜#〜] dsl [〜#〜]はで利用可能になるという事実に基づいていますSwift 5.1およびXcodeまたはAppleのエコシステムとの相関関係はありませんが、@available(iOS13,...)としてもマークされています。これは、iOSの可用性属性でSwift 5.1機能を使用してすべてをマークする必要があったことを意味します。 Swift 5.1がリリースされると、それらの一部は削除されますが、Appleが別の指示をしない限り、SwiftUIおよびCombineについて確認することはできません。これは[〜#〜] dsl [〜#〜]の提案にも記載されています:

実装: [〜#〜] pr [〜#〜] 。 Xcode開発者プレビューの実装では、ここで説明した変換よりも多少単純な変換を使用していることに注意してください。リンクされた [〜#〜] pr [〜#〜] はプレビューでの実装を反映していますが、この提案に合わせて積極的に開発中です。

したがって、Swift 5.1がリリースされると、後方互換性の制限が解除される可能性がありますが、実際にはApple teamによって明確化する必要があります。

24
farzadshbfn

いいえ。 SwiftUI には、iOS 13以降、macOS 10.15以降、tvOS 13以降、またはwatchOS 6以降の展開ターゲットが必要です。フレームワークには、OSの古いバージョンには存在しない多くの新しいタイプが含まれています。

12
rob mayoff

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が完全に正常に動作するときに、起床して400〜1,000ドルの支払いをするつもりはありません。

常にiOS 13に関係のないバグを修正するために、アプリを更新し、改善する必要性が常にあります。つまり、以前は知らなかったバグを見つけて、多くのユーザーを不幸にします。 。最新のiOSバージョンではありません。そして、多くの開発者がサポートしている企業/企業の顧客についても話していません。その分野でのさまざまな理由により、iOSの更新に関する多くのプッシュバックがあります。

IOS 13とSwiftUIに興奮する前に(これは素晴らしいので絶対にすべきです)、シリコンバレーの外の現実の世界に戻って、それは平均的な消費者が期待するものと正確に一致しませんし、サポートする必要があります古いデバイスを使用する必要があります。なぜなら、疎外する人が多すぎるからです。

10
cspam

Appleドキュメントに基づいて、残念ながらiOS 13以降でのみ利用可能です。

https://developer.Apple.com/documentation/swiftui/

8
Armands L.

IOS 13以降と互換性があります。ドキュメントへのリンクはこちらです。

https://developer.Apple.com/documentation/swiftui/


Xcode 10でもサポートされていません。 (Jun 3 2019)の時点でベータ版であるXcode 11を使用する必要があります。 https://developer.Apple.com/tutorials/swiftui/creating-and-combining-views

8
mahan

iOS 13以降でのみ動作します

を使用してSwiftUIコードを添付できます

@available(iOS 13.0, *)
4
Wendy Liga

皆が言ったように、古いiOSバージョンとの後方互換性はありません。ただし、Appleは常に最新のiOSの高いインストールベースを持ち、iOS 13にはiPhone 6S以降、iPad Air 2以降、新しいiPad mini 4およびiPhone SEが必要です。 。大多数のユーザーは、iOS 13をインストールして、素敵なSwiftUIアプリを楽しむことができます。

3
welshiebiff

私が前に言ったように、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プロジェクトではStoryboardとSwiftUIの両方を組み合わせることができないことに気づいたことです。

2