在创建一个新的project后,在ViewController中添加如下代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor redColor];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 100)];
view.backgroundColor = [UIColor brownColor];
[[UIApplication sharedApplication].delegate.window addSubview:view];
[[UIApplication sharedApplication].delegate.window bringSubviewToFront:view];
}
理所当然的认为,在当前屏幕上会是棕色的View盖在红色ViewController上面。可是到了运行的时候发现屏幕就显示了一个红色的View。

棕色的View没添加到?不太可能,程序也能运行到这里
window是nil?更加不可能,为nil的话还怎么添加ViewController
打开层次视图的时候,会发现其实棕色的view是被盖住了:

但是如果为这个ViewController添加一个Nav什么的,运行又是预想中的效果。
于是乎只能猜测,当单个ViewController作为rootViewController时,首先会先执行viewDidLoad方法,将整个View加载完毕后,才会添加到window上面。