iOSアプリケーションのライフサイクル


13版以降、app依頼キャラクターはapp deletegate、シーン依頼に分けられる
->新しいマルチウィンドウサポート機能の使用
ex)クロムを左に置き、他のアプリケーションを右に置くことができるようにする]
AppDelegate:ライフサイクルイベントの処理
AppDelegate.swift
 func application(_ application: UIApplication, didFinishLaunchingWithOptions
                  launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }
  • アプリケーションが起動し、アプリケーション設定が完了すると
  • が呼び出される.
    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession
                     : UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
            // Called when a new scene session is being created.
            // Use this method to select a configuration to create the new scene with.
            return UISceneConfiguration(name: "Default Configuration",
                                        sessionRole: connectingSceneSession.role)
       
  • アプリケーションが表示する必要がある新しいシーンまたはヘルプを呼び出すには、アプリケーションの起動時に呼び出す必要がなく、新しいシーン、ウィンドウをインポートする必要がある場合にのみ呼び出す->シーンセッションのメソッド
  • .
     func application(_ application: UIApplication, 
                      didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
            // Called when the user discards a scene session.
            // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
            // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
        }
  • シーンを削除し、プログラミングで削除すると呼び出され、
  • SceneDelegate:AppDelegateは、UIウィンドウに関連する部分、UI、データを画面に表示します.
    ->UISceneSessionなどのシーンライフサイクルイベントの作成、破壊、爆発を担当します.
    SceneDelegate.swift
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession,
               options connectionOptions: UIScene.ConnectionOptions) {
            // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
            // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
            // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
            guard let _ = (scene as? UIWindowScene) else { return }
        }
    
  • UIsceneSessionライフサイクルから呼び出される最初の方法.アプリケーションにシーンを追加するときに呼び出される
  • .
    func sceneDidDisconnect(_ scene: UIScene) {
            // Called as the scene is being released by the system.
            // This occurs shortly after the scene enters the background, or when its session is discarded.
            // Release any resources associated with this scene that can be re-created the next time the scene connects.
            // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
        }
  • シーンがバックグラウンドに切り替わると、iOSはシーンを削除してメモリを回収できます.これは、アプリケーションがシャットダウンまたは実行されないのではなく、セッションでシーンのみが中断され、無効になっていることを意味します.
     func sceneDidBecomeActive(_ scene: UIScene) {
            // Called when the scene has moved from an inactive state to an active state.
            // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
        }
  • シーンWillEnterForegroundメソッドを呼び出し、画面にシーンを表示するときに
  • を使用する準備をします.
    func sceneWillResignActive(_ scene: UIScene) {
            // Called when the scene will move from an active state to an inactive state.
            // This may occur due to temporary interruptions (ex. an incoming phone call).
        }
  • ユーザがシーンとのインタラクションを停止するときに呼び出す
  • .
    func sceneDidEnterBackground(_ scene: UIScene) {
            // Called as the scene transitions from the foreground to the background.
            // Use this method to save data, release shared resources, and store enough scene-specific state information
            // to restore the scene back to its current state.
        }
  • シーンがバックグラウンドに入ると
  • が呼び出される.

    バージョン13以降のアプリケーションライフサイクル
    リファレンス