Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between SceneDelegate and AppDelegate

Tags:

swift

swiftui

In my SwiftUI project I see AppDelegate file as well as a SceneDelegate file.

What are the differences between them?

For example between the methods in SceneDelegate

scene(_:willConnectTo:options:) 

and in the AppDelegate

application(_:didFinishLaunchingWithOptions:) 
like image 600
SwiftiSwift Avatar asked Jun 07 '19 16:06

SwiftiSwift


People also ask

What is the use of AppDelegate?

The app delegate is effectively the root object of your app, and it works in conjunction with UIApplication to manage some interactions with the system. Like the UIApplication object, UIKit creates your app delegate object early in your app's launch cycle so it's always present.

What is the use of SceneDelegate in Xcode 11?

Use your UISceneDelegate object to manage life-cycle events in one instance of your app's user interface. This interface defines methods for responding to state transitions that affect the scene, including when the scene enters the foreground and becomes active, and when it enters the background.

What is AppDelegate file?

In all the apps built prior iOS 13, AppDelegate is the main entry of the app and it is the place where many logics and app states will be handled. It is the place where application launch and apps foreground and background logics are handled.

What is AppDelegate lifecycle?

App delegate provides help to know the app's current state. iOS Application Life Cycle depends on app delegate functions. iOS Application Life Cycle delegate provides control of the application. When we using core data then we should create a managed object of core data in the App delegate page.


1 Answers

The two files are meant to split the work by what is needed to run the app as a whole and what is needed for one "instance" that would support visibly running in the background. This would be something like configuring a database once, but displaying different sets of values by window.

You could think of them as the global and private versions. One is shared and the other is limited to the individual owner. In a way, they are exactly what you would expect by the names.

Multi-window support is happening

Next time you create a new Xcode project you’ll see your AppDelegate has split in two: AppDelegate.swift and SceneDelegate.swift. This is a result of the new multi-window support that landed with iPadOS, and effectively splits the work of the app delegate in two.

From iOS 13 onwards, your app delegate should:

  1. Set up any data that you need for the duration of the app.
  2. Respond to any events that focus on the app, such as a file being shared with you.
  3. Register for external services, such as push notifications.
  4. Configure your initial scenes.

In contrast, scene delegates are there to handle one instance of your app’s user interface. So, if the user has created two windows showing your app, you have two scenes, both backed by the same app delegate.

Keep in mind that these scenes are designed to work independently from each other. So, your application no longer moves to the background, but instead individual scenes do – the user might move one to the background while keeping another open.

Courtesy of https://www.hackingwithswift.com/articles/193/whats-new-in-ios-13

like image 197
Abandoned Cart Avatar answered Sep 17 '22 18:09

Abandoned Cart