【iOS】AppDelegate.swiftってなにしてんの?

  • 190
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はい、ふとAppDelegate.swiftがなんの用途のために使うのか気になったため実際に検証しました。

AppDelegate.swiftとは?

 アプリをつくった段階でデフォルトでつくられるファイルのひとつ。アプリ全体のライフタイムイベントを管理するためのクラス。
 

実際に検証!

ソースコード
AppDelegate.swift
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }

    func applicationWillResignActive(application: UIApplication) {
        println("アプリ閉じそうな時に呼ばれる")
    }

    func applicationDidEnterBackground(application: UIApplication) {
        println("アプリを閉じた時に呼ばれる")
    }

    func applicationWillEnterForeground(application: UIApplication) {
        println("アプリを開きそうな時に呼ばれる")
    }

    func applicationDidBecomeActive(application: UIApplication) {
        println("アプリを開いた時に呼ばれる")
    }

    func applicationWillTerminate(application: UIApplication) {
        println("フリックしてアプリを終了させた時に呼ばれる")
    }

}

それぞれのメソッド内でメソッド名をもとにどんな時に呼ばれるのかを予想してprintln("どういう時")を記述。

①Runでアプリを起動(cmd + R)

アプリ起動

アプリが開いたのでapplicationDidBecomeActive(application: UIApplication)メソッドが呼ばれたっぽい!

②アプリを閉じる(cmd + shift + H)

アプリを閉じる

アプリを閉じたのでapplicationWillResignActive(application: UIApplication)メソッドapplicationDidEnterBackground(application: UIApplication)メソッドが呼ばれたっぽい!

③アプリを開く(クリック)

アプリを開く

アプリを開いたのでapplicationWillEnterForeground(application: UIApplication)メソッドapplicationDidBecomeActive(application: UIApplication)メソッドが呼ばれたっぽい!

④ホームボタン2度押し(cmd + shift + Hを2度押し)

ホームボタン2度押し

アプリを閉じようとしているのでapplicationWillResignActive(application: UIApplication)メソッドが呼ばれたっぽい!

⑤フリックでアプリを終了する

アプリを落とす

アプリを終了させたのでapplicationDidEnterBackground(application: UIApplication)メソッドapplicationWillTerminate(application: UIApplication)メソッドが呼ばれたっぽい!

検証終了

やはり、println()内で予想した仮説どおりの動きをしてくれた。

実際どのような処理をしたい時に使うの?

 logを取ったり(どの画面で閉じたか)、ローカルのデータベースに今の状態を保存したい時とかにつかう。
この辺になってくると高度な処理になってくるらしいので、使うのはまだ先の模様。