2012/06/03更新

[XCODE] iPhoneアプリが立ち上げるまでの仕組み

このエントリーをはてなブックマークに追加            

今日は、ライトなネタです。
iPhoneアプリがmain関数からどのように起動しているんだろうと疑問を思い、 色々と調べました。
開発で良く使うUIViewControllerへコントロールが来るまでをブログに書きたいと思います。

UIApplication UIApplicationDelegate



iPhoneアプリが起動するところまでのソースコード

こんな感じのようです。main関数から起動するのは、他のCやC++のソースと一緒です。
(main関数のところ)
#import 
#import "AppDelegate.h"

int main(int argc, char *argv[]) {
  @autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
  }
}
UIApplicationMain関数を実行する際に、delegate「AppDelegate」のクラス名を指定しています。
この指定により、AppDelegateでアプリ起動時や起動後に処理を実行できるようになります。


続いて、AppDelegateクラスの実装です。
ここでは、アプリの起動後やアプリがバックグラウンドに移動する際などに、処理を実行する事が可能です。
アプリ起動時には「application:didFinishLaunchingWithOptions:」が呼び出されるので、 ここでWindowの作成や、呼び出すViewControllerを作成し、画面に表示します。
(AppDelegateのapplication:didFinishLaunchingWithOptions:のところ)
#import "AppDelegate.h"

@implementation AppDelegate

・・・省略・・・

// アプリを起動する際に呼び出されるメソッド
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    // まずはWindowのインスタンスを画面サイズに合わせて作成する
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

     //   Window上に表示するViewControllerのインスタンスを作成する
    // initWithNibNameにNibファイルを指定することで、
    // Interface Builderで作成したNibファイルを読み込める
    rootViewController = [[RootViewController alloc] initWithNibName:@"RootView"bundle:nil];    

    // Windowに表示するViewをSubViewとして追加する。
    [self.window addSubview:rootViewController.view];
    
    // Windowを表示する
    [self.window makeKeyAndVisible];

    // 処理が成功したのでYESを返す
    return YES;
}


これの後は、通常のアプリ開発と一緒で、 RootViewControllerを実装していくことが出来ます(*´∇`*)




最後に

main関数からのViewControllerまでにコントロールが移動してくるところが、 よくわかっていなかったですが、今回でスッキリして良かったです(・∀・)
他にも色々とやりかたはあると思いますが、一つやり方が分かって良かったぁ。
最後までお読み頂きましてありがとうございました。






こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。