見出し画像

iOSアプリ開発 入門 (1) - ライフサイクル

iOSのライフサイクルメソッドの順番をよく忘れるのでメモしました。

・iOS 14

1. iOSのライフサイクルメソッドの呼ばれる順番

iOSのライフサイクルメソッドの呼ばれる順番は、次のとおり。

◎ アプリの起動

(1) AppDelegate.application(:didFinishLaunchingWithOptions:)
(2) AppDelegate.application(:configurationForConnecting:options:)
(3) SceneDelegate.scene(:willConnectTo:connectionOptions:)
(4) ViewController.viewDidLoad()
(5) SceneDelegate.sceneWillEnterForeground(:)
(6) SceneDelegate.sceneDidBecomeActive(:)

◎ アプリのバックグラウンド遷移

(1) SceneDelegate.sceneWillResignActive(:)
(2) SceneDelegate.sceneDidEnterBackground(:)

◎ アプリのフォアグラウンド遷移

(1) SceneDelegate.sceneWillEnterForeground(:)
(2) SceneDelegate.sceneDidBecomeActive(:)

◎ アプリの終了

(1) SceneDelegate.sceneDidDisconnect(:)
(2) AppDelegate.application(:didDiscardSceneSessions:)

2. iOSのライフサイクルメソッドの雛形

iOS13のライフサイクルメソッドの雛形は、次のとおり。

◎ AppDelegate.swift

import UIKit

// AppDelegate
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    // アプリの起動時に呼ばれる
    func application(_ application: UIApplication, didFinishLaunchingWithOptions
        launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        return true
    }

    // シーンの起動時に呼ばれる
    func application(_ application: UIApplication, configurationForConnecting
        connectingSceneSession: UISceneSession,
        options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }

    // シーンの終了時に呼ばれる
    func application(_ application: UIApplication, didDiscardSceneSessions
        sceneSessions: Set<UISceneSession>) {
    }
}

◎ SceneDelegate.swift

import UIKit

// SceneDelegate
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?

    // シーンの起動時に呼ばれる
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession,
        options connectionOptions: UIScene.ConnectionOptions) {
        guard let _ = (scene as? UIWindowScene) else { return }
    } 

    // シーンの終了時に呼ばれる
    func sceneDidDisconnect(_ scene: UIScene) {
    }

    // シーンのフォアグラウンド遷移前に呼ばれる
    func sceneWillEnterForeground(_ scene: UIScene) {
    }
   
    // シーンのフォアグラウンド遷移後に呼ばれる
    func sceneDidBecomeActive(_ scene: UIScene) {
    }

    // シーンのバックグラウンド遷移前に呼ばれる
    func sceneWillResignActive(_ scene: UIScene) {
    }

    // シーンのバックグラウンド遷移後に呼ばれる
    func sceneDidEnterBackground(_ scene: UIScene) {
    }
}

◎ ViewController.swift

import UIKit

// ViewController
class ViewController: UIViewController {
    // ビューのロード時に呼ばれる
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    // ビュー表示前に呼ばれる
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    }

    // ビュー表示後に呼ばれる
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
    }

    // ビュー非表示前に呼ばれる
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
    }

    // ビュー非表示後に呼ばれる
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
    }    
}

次回


この記事が気に入ったらサポートをしてみませんか?