iOSのライフサイクル



新規プロジェクトの作成

Create a new Xcode project を選択します。
Single View Application を選択します。


Product Name をEx01にします。


書類の下にxcodeというフォルダを作成し(任意)、Createを選択します。


下記のようなプロジェクトが生成されます。


ソースコードの解説

  • AppDelegate
  • MainStoryboard_iPhone, MainStoryboard_ipad
  • ViewController
の3つソースコードとヘッダーファイルが生成されます。

AppDelegateの解説

AppDelegateは、アプリケーションの起動や終了や中断などの処理を記載しています。

それでは、早速AppDelegateの挙動を確認するために、AppDelegate.mの各メソッドでログを生成してみます。

NSLog(@"メソッド名");

AppDelegate.h
//
//  AppDelegate.h
//  Ex01
//
//  Created by ###### on 11/12/08.
//  Copyright (c) 2011年 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

AppDelegate.m

AppDelegate.m


各メソッドは、下記のタイミングで呼び出されます。
  • application:didFinishLaunchingWithOptions
    はじめての起動時に呼び出される
  • application:applicationWillResignActive
    アプリが非Activeになる直前に呼び出される
  • application:applicationDidEnterBackground
    アプリが非Activeになりバックグランド実行になった際に呼び出される
  • application:applicationWillEnterForeground
    2回目以降の起動時に呼び出される(Backgroundにアプリがある場合)
  • application:applicationDidBecomeActive
    アプリがActiveになった際に呼び出される
  • application:applicationWillTerminate
    システムからのアプリ終了の際に呼び出される
アプリがはじめて起動する場合
application:didFinishLaunchingWithOptions > application:applicationDidBecomeActive

アプリが終了する場合
application:applicationWillResignActive > application:applicationDidEnterBackground

アプリが2回目の起動の場合
application:applicationWillEnterForeground > application:applicationDidBecomeActive

アプリが2回目の起動とは、一度起動したアプリを再度、アイコンから起動すると確認できます。
一度起動したアプリは、Homeボタン長押しででてくる起動中のアプリ一覧に表示される状態になります。


Storyboardの解説

AppDelegateで、アプリがActiveになると、Stortyboardが表示されます。
どのStoryboardを読み出すかは、Ex01-info.plist に記載されます。


Storyboardを表示してみます。MainStoryboard_iPhone.storyboardを選択します。画面右側に画面UIが表示されます。矢印がついている画面が最初に表示される画面になります。


矢印ボタンをおして、View Controller Sceneを表示します。



右上のViewの表示方法で、 を有効にします。
左から3つめのを選択します。Classの部分にViewControllerが指定されており、ViewControllerが連動されている事が読み取れます。


ViewControllerの解説


ViewController.mにログを出力してみます。

NSLog(@"メソッド名");


ViewController.h
//
//  ViewController.h
//  Ex01
//
//  Created by ###### on 11/12/08.
//  Copyright (c) 2011年 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end

ViewController.m

ViewController.m


アプリがはじめて起動する場合
[ViewController] shouldAutorotateToInterfaceOrientation
[AppDelegate] didFinishLaunchingWithOptions
[ViewController] viewDidLoad
[ViewController] shouldAutorotateToInterfaceOrientation
[ViewController] viewWillAppear
[ViewController] shouldAutorotateToInterfaceOrientation
[AppDelegate]  applicationDidBecomeActive
[ViewController] viewDidAppear

アプリが終了する場合
[AppDelegate] applicationWillResignActive
[AppDelegate] applicationDidEnterBackground

アプリが2回目の起動の場合
[AppDelegate] applicationWillEnterForeground
[AppDelegate] applicationDidBecomeActive



Comments