iPhoneアプリの起動から表示までを追ってみる

iPhoneアプリをホーム画面でタップしてから最初のアプリ画面が表示されるところまでの流れが、SDKドキュメントから見つけられなかったので(というか、英語で書かれたドキュメントが大量で、そもそもちゃんと見ていない)、新規プロジェクトのテンプレートから View-based Application を選んで、画面を表示するだけの簡単なプロジェクトを用意し、適当に見繕ったメソッドにNSLogを入れて、メソッドの呼び出し順を確認してみました。

動作環境は、iOS4.1です。

(アプリを初めて実行すると以下が発動)
   main
   UIViewController initWithCoder
   UIViewController awakeFromNib
   UIApplicationDelegate didFinishLaunchingWithOptions
     (viewController.viewを参照すると以下が発動)
       UIViewController loadView
       UIView initWithCoder
       UIView layerClass
       UIView awakeFromNib
       UIViewController viewDidLoad
     (windowにviewController.viewをaddSubviewすると以下が発動)
       UIViewController viewWillAppear
       UIView willMoveToWindow
       UIView willMoveToSuperview
       UIViewController shouldAutorotateToInterfaceOrientation
       UIViewController viewDidAppear
       UIViewController shouldAutorotateToInterfaceOrientation
       UIView didMoveToWindow
       UIView didMoveToSuperview
   UIApplicationDelegate applicationDidBecomeActive
   UIView drawRect
(アプリ実行時にホームボタンを押すと以下が発動)
   UIApplicationDelegate applicationWillResignActive
   UIApplicationDelegate applicationDidEnterBackground
(アプリをタスクバーから呼び出すと以下が発動)
   UIApplicationDelegate applicationWillEnterForeground
   UIApplicationDelegate applicationDidBecomeActive
(アプリをタスクバーから消すとSIGKILLが発動)
   たぶんトラップ不能

NSLogを入れていないクラスやメソッドも他にたくさんあるので、呼び出しはこれで全てという訳ではないと思います。流れを見ると、タスクバーから消すときは、アプリに問答無用というのがかなり割り切ってますね。何かwillなんとか呼んでくれてその上で数秒後にSIGKILLならまだ救われるのだけれども…。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください