[XCODE] iPhoneアプリが立ち上げるまでの仕組み
今日は、ライトなネタです。
iPhoneアプリがmain関数からどのように起動しているんだろうと疑問を思い、 色々と調べました。
開発で良く使うUIViewControllerへコントロールが来るまでをブログに書きたいと思います。
(main関数のところ)
この指定により、AppDelegateでアプリ起動時や起動後に処理を実行できるようになります。
続いて、AppDelegateクラスの実装です。
ここでは、アプリの起動後やアプリがバックグラウンドに移動する際などに、処理を実行する事が可能です。
アプリ起動時には「application:didFinishLaunchingWithOptions:」が呼び出されるので、 ここでWindowの作成や、呼び出すViewControllerを作成し、画面に表示します。
(AppDelegateのapplication:didFinishLaunchingWithOptions:のところ)
これの後は、通常のアプリ開発と一緒で、 RootViewControllerを実装していくことが出来ます(*´∇`*)
他にも色々とやりかたはあると思いますが、一つやり方が分かって良かったぁ。
最後までお読み頂きましてありがとうございました。
iPhoneアプリがmain関数からどのように起動しているんだろうと疑問を思い、 色々と調べました。
開発で良く使うUIViewControllerへコントロールが来るまでをブログに書きたいと思います。
iPhoneアプリが起動するところまでのソースコード
こんな感じのようです。main関数から起動するのは、他のCやC++のソースと一緒です。(main関数のところ)
#importUIApplicationMain関数を実行する際に、delegate「AppDelegate」のクラス名を指定しています。#import "AppDelegate.h" int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }
この指定により、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までにコントロールが移動してくるところが、 よくわかっていなかったですが、今回でスッキリして良かったです(・∀・)他にも色々とやりかたはあると思いますが、一つやり方が分かって良かったぁ。
最後までお読み頂きましてありがとうございました。