viewController的viewdidload在appDelegate的方法之前调用

Has*_*lik 7 macos ios

我想在viewDidLoad调用之前初始化一些代码,但它总是首先进入viewDidLoad,然后进入方法applicationDidFinishLaunching.我无法理解发生了什么?

kir*_*der 6

这是因为 AppDelegate 在 applicationDidFinishLaunching 之前自动实例化其窗口和主视图控制器。您应该在故事板中取消选中“是初始视图控制器”,并在 applicationDidFinishLaunching 中手动创建窗口及其根视图控制器。


小智 5

application:didFinishLaunchingWithOptions的文档:

您应该使用此方法来初始化您的应用程序并准备运行。在您的应用程序启动并加载其主 nib 文件后调用它。在调用此方法时,您的应用程序处于非活动状态。在此方法返回后的某个时间点,调用后续委托方法将您的应用程序移动到活动(前台)状态或后台状态。

因此,一旦调用了视图属性或方法,就会为视图控制器延迟加载视图。发生这种情况时,会调用 viewDidLoad,因此如果您的窗口 rootViewController 属性设置为笔尖中的根 ViewController,那么这是预期的行为。