在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
如何知道在应用程序中创建并初始化窗口?
答案 0 :(得分:2)
虽然我们没有100%确定源代码,但似乎UIWindow
的初始化程序是为了告诉UIApplication
它已创建。它只是Apple实施这两个类的一部分。
答案 1 :(得分:1)
如果您正在寻找特定的功能(挂钩,或只是好奇),UIWindow
中的大多数应用程序设置都是使用- (void)_createContextIfNecessaryForCurrentApplicationState;
方法和NSISEngineDelegate
执行的协议方法。
答案 2 :(得分:0)
Apple doc说
启动应用程序时,系统会调用UIApplicationMain 功能;在其他任务中,此函数创建一个单例 UIApplication对象。然后通过调用来访问该对象 sharedApplication类方法。您应用的主要角色 应用程序对象是处理传入用户的初始路由 事件。它通过控制发送转发给它的动作消息 对象(UIControl类的实例)到适当的目标 对象。 应用程序对象维护打开的窗口列表 (UIWindow对象)并通过这些可以检索任何应用程序 UIView对象。