在建立一個新的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上面。