UIApplication如何知道在应用程序中创建UIWindow的时间?

时间:2016-06-06 16:15:35

标签: ios objective-c uiwindow uiapplication

UIApplicationDelegate的{​​{1}}我有以下代码:

application:didFinishLaunchingWithOptions:

NSLog(@"%d\n", [UIApplication sharedApplication].windows.count); self.mainWindow = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; NSLog(@"%d\n", [UIApplication sharedApplication].windows.count); 是标题中声明的mainWindow

第一个@property打印NSLog,而第二个打印0

1如何知道在应用程序中创建并初始化窗口?

3 个答案:

答案 0 :(得分:2)

虽然我们没有100%确定源代码,但似乎UIWindow的初始化程序是为了告诉UIApplication它已创建。它只是Apple实施这两个类的一部分。

答案 1 :(得分:1)

如果您正在寻找特定的功能(挂钩,或只是好奇),UIWindow中的大多数应用程序设置都是使用- (void)_createContextIfNecessaryForCurrentApplicationState;方法和NSISEngineDelegate执行的协议方法。

答案 2 :(得分:0)

Apple doc

  

启动应用程序时,系统会调用UIApplicationMain   功能;在其他任务中,此函数创建一个单例   UIApplication对象。然后通过调用来访问该对象   sharedApplication类方法。您应用的主要角色   应用程序对象是处理传入用户的初始路由   事件。它通过控制发送转发给它的动作消息   对象(UIControl类的实例)到适当的目标   对象。 应用程序对象维护打开的窗口列表   (UIWindow对象)并通过这些可以检索任何应用程序   UIView对象。