目的
iOSがbuildされて、どのように立ち上がっているのかという根本的な仕組みを見直す。
iPhoneアプリが起動するまで
#import
#import "AppDelegate.h"
int main(int argc, char *argv[]) {
@autoreleasepool {
//AppDelegateのクラス名を指定
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
上記のように、main関数を実行することによりアプリが起動します。この点に関しては、CやC++のソースコードと同じになります。
UIApplicationMain関数を実行する際に、AppDelegateのクラス名を指定しているため、AppDelegateでアプリ起動時・起動後に処理を実行できるようになります。
次にAppDelegateクラスの処理内容です。
この処理で、アプリの起動後やアプリがバックグラウンドに移動する際などに、処理を実行することを可能にします。
// AppDelegate.swift
import UIKit
// Main関数の自動実装
@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
}
// 中略
}
上記がAppDelegateのソースコードです。
上から4行目を見ると、@UIApplicationMainという記述があります。これはmain関数を自動実装してくれるものであり、iOSアプリではmain.swift ファイルを用意しなくても、このコードを記述することでmain.swiftファイルを省略できます。そのため最初に記述した、main.swiftのファイルは実際はxcode上にない場合もあるので注意してください。