1. ホーム
  2. swift

[解決済み] SceneDelegateとAppDelegateの違いについて

2023-04-03 04:43:05

質問

私のSwiftUIプロジェクトでは AppDelegate ファイルだけでなく SceneDelegate ファイルでも使用できます。

両者の違いは何ですか?

例えば SceneDelegate

scene(_:willConnectTo:options:)

で、その中に AppDelegate

application(_:didFinishLaunchingWithOptions:)

どのように解決するのですか?

2 つのファイルは、アプリを全体として実行するために必要なものと、バックグラウンドで目に見える形で実行することをサポートする 1 つのインスタンスに必要なものによって、作業を分割することを意図しています。これは、データベースを一度構成し、ウィンドウによって異なる値のセットを表示するようなものです。

これらはグローバル版とプライベート版と考えることができます。一方は共有され、もう一方は個々の所有者に制限されます。ある意味、これらは名前から予想されるとおりのものです。

マルチウィンドウのサポートが行われる

次に新しいXcodeプロジェクトを作成すると、AppDelegateが2つに分かれているのがわかります。 が二つに分かれているのがわかる。AppDelegate.swiftとSceneDelegate.swiftだ。これは これはiPadOSで採用された新しいマルチ・ウィンドウ・サポートの結果で、アプリの作業を効果的に分割する。 アプリデリゲートの作業を効果的に2つに分割しています。

iOS 13 以降では、アプリのデリゲートは以下のようになります。

  1. アプリの期間中に必要なデータを設定します。
  2. ファイルが共有されるなど、アプリに焦点を当てたあらゆるイベントに対応します。
  3. プッシュ通知などの外部サービスに登録します。
  4. 初期シーンを設定します。

これに対して、シーンデリゲートは、アプリのユーザーインターフェースの1つのインスタンスを処理するために存在します。 アプリのユーザーインターフェースの1つのインスタンスを処理するためにあります。そのため、ユーザーがアプリを表示するウィンドウを2つ作成した場合、2つのシーンがあります。 2つのシーンがあり、両方とも同じアプリデリゲートによってサポートされています。

これらのシーンは、互いに独立して動作するように設計されていることに留意してください。 設計されていることに留意してください。そのため、アプリケーションはもはやバックグラウンドに移動しません。 ユーザーは、別のシーンを開いたまま、そのシーンをバックグラウンドに移動させることができます。 ユーザーは別のシーンを開いたまま、あるシーンをバックグラウンドに移動させるかもしれません。

提供 https://www.hackingwithswift.com/articles/193/whats-new-in-ios-13