這說明在執行 didFinishLaunchingWithOptions: 這個代理方法時,在執行[self.window makeKeyAndVisible];方法之前,通過[UIApplication sharedApplication].keyWindow 方法獲取不到window,且在執行[UIApplication sharedApplication].keyWindow之前是要執行,rootviewcontroller的代碼的,因此先執行了controller中的代碼,但是在controller中我們發現,在viewWillAppear和viewDidLoad 中的keywindow也是nil,但是在直到viewWillLayoutSubviews時才有了keywindow的值。但是無論何時都能獲取到delegate.window。
結論
1、在獲取到window時最好使用[[UIApplication sharedApplication].delegate window]獲取window
2、不要在keywindow為nil的時候給window上添加代碼,例如添加彈窗
————————————————
原文鏈接:https://blog.csdn.net/weixin_43883776/article/details/85017069