とりあえずnull

プログラミングの勉強日記

Xcode上でiOSアプリをRunしたときの処理順序について整理してみた

実行ファイルの読み込まれる順番

  1. main.m
  2. Appdelegate.m
  3. ViewController.m(任意に作ったController)

となっている。 以下のようにNSLog()を使って確かめてみた。

// main.m
#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    NSLog(@"main.m");
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

 

// AppDelegate.m
#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    NSLog(@"AppDelegate.m");
    return YES;
}

 

// ViewController.m
#import "ViewController.h"

@interface ViewController ()
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"ViewController.m");
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

  実行結果

2015-04-23 12:16:01.167 processTest[24460:504513] main.m
2015-04-23 12:16:01.733 processTest[24460:504513] AppDelegate.m
2015-04-23 12:16:01.738 processTest[24460:504513] ViewController.m

以上より、main -> AppDelegate -> ViewControllerという順番に読み込まれているのがわかった。

main.mでやっていること

  • FoundationフレームワークのFoundation.hを読み込んでいる
  • AppDelegate.hを読み込んでいる
  • @autoreleasepoolメソッド処理をしている。メモリの自動解放処理っぽい。よくわかっていない

AppDelegate.mでやっていること

  • はじめてのときに呼び出したり、バックグランドになる直前に呼び出したりとアプリ起動時の節々のタイミングで行ないたい処理をまとめている。詳しくはまだわかってない

ViewController.mでやっていること

  • そのControllerにて行ないたい処理を実行する