文顶顶http://www.cnblogs.com/wendingding/p/3759960.html
1.main函数
2.UIApplicationMain
创建UIApplication对象
创建UIApplication的delegate对象
3.delegate对象开始处理(监听)系统事件
程序启动完毕后,就会调用代理的application:didFinishLaunchingWithOptions方法
在该方法中创建UIWindow
创建和设置UIWindow的rootViewController
显示窗口
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
2 {
3 // 1.创建UIWindow
4 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
5 self.window.backgroundColor = [UIColor whiteColor];
6
7
8 // 2.创建控制器
9 NJViewController *vc = [[NJViewController alloc] init];
10
11 // 这时候就使用到了view,所以就会调用ViewLoad方法来创建一个view
// 其实是两步操作, 首先调用loadview方法, 创建控制器的veiw,然后再设置控制器的view的颜色为紫色, 也就是说后一次的颜色覆盖掉了前一次的颜色
12 vc.view.backgroundColor = [UIColor purpleColor];
13
14 // 3.设置控制器为window的根控制器
15 self.window.rootViewController = vc;
16
17 // 4.显示window(如果没有“<span style="font-family: Arial, Helvetica, sans-serif;">vc.view.backgroundColor = [UIColor purpleColor];这一句话</span>”在这一行才用到了控制器的veiw)
18 [self.window makeKeyAndVisible];
19
20 return YES;
21 }
-----------------------------------------------
// 当控制器需要显示控制器的view的时候就会调用loadView
10 // 可以在loadView方法中创建view给控制器
11 // 该方法一般用于自定义控制器的view
12 - (void)loadView
13 {
14 // 什么时候调用loadveiw就代表什么时候加载控制器的veiw
15 NSLog(@"loadView");
16
17 self.view = [[UIView alloc] init];
18 self.view.backgroundColor = [UIColor greenColor];
19 }
20
21 - (void)viewDidLoad
22 {
<span style="white-space:pre"> </span>// 如果需要自定义view,在这两个方法中都行,但是在loadView 性能更好,因为系统是创建完view之后才调用的viewDidLoad,如果在这个方法中创建view,那么值钱创建的view就白费了!!!
23 [super viewDidLoad];
24 NSLog(@"viewDidLoad");
25 }