如何调试“Windows 是在应用程序初始化完成之前创建的。”
Posted
技术标签:
【中文标题】如何调试“Windows 是在应用程序初始化完成之前创建的。”【英文标题】:How to debug "Windows were created before application initialzation completed." 【发布时间】:2017-10-03 18:21:35 【问题描述】:我的通用 ios 应用显示消息
[ApplicationLifecycle] Windows 是在应用程序之前创建的 初始化完成。这可能会导致不正确的视觉 外观。
就在启动开始时 - 在达到 didFinishLaunchingWithOptions 之前。尽管稍后出现屏幕意外空白的问题,但该应用程序并未崩溃 - 不知道为什么。 该应用程序不会在 iPhone 上显示此消息。 iPad 使用 splitviewcontroller(实际上是自定义的)。
它是用objective-C 编写的,带有mainWindow.xib,而不是故事板。 无论如何都可以就如何确定导致此问题的原因提供任何建议。
【问题讨论】:
如果您有任何在willFinishLaunchingWithOptions
中创建窗口的代码,请尝试将其移至didFinishLaunching
中的AppDelegate
谢谢,但我不会在这个应用程序中调用 willFinishLaunchingWithOptions。
你能分享一下你的 AppDelegate 类的代码吗?
不敢相信 Apple 将其拼写为“initialzation”……但搜索起来更容易!
【参考方案1】:
我遇到了同样的问题,该错误只会显示在 10.5 或更大尺寸的 ipad 上,我不知道这是否会对您有所帮助,在我的情况下是由 launchImage 引起的。为了解决我更改了设置-目标-常规,在字段-启动屏幕文件-将其设置为= LaunchScreen,然后在LaunchScreen.storyboard上拖动图像视图并在图像字段中加载LaunchImage.png。
【讨论】:
【参考方案2】:除了PabloT.的回答:
在您的目标设置中,查找General
- App Icons and Launch Images
并查看Launch Screen File
是否为空白。您应该将其设置为您的mainWindow.xib
。
这不仅可以解决这个问题,还有助于将您的应用调整为更大的 iPad 屏幕尺寸。
【讨论】:
【参考方案3】:什么对我有用:您必须保留对UIWindow
的引用,因为当从didFinishLaunching
返回时,临时的UIWindow *window
会丢失。
这意味着:
@interface AppDelegate ()
UIWindow *myWindow;
@end
【讨论】:
【参考方案4】:当我删除 Swift 转换遗留的 Launch Screen.xib
时,我不再收到此错误。
原始应用程序是在 Objective-C 中,它需要 xib
文件。最近完成转换后,我开始收到主题错误消息。
我删除了Launch Code.xib
,清理了所有内容,然后重建。从那以后我没有收到错误消息。
【讨论】:
以上是关于如何调试“Windows 是在应用程序初始化完成之前创建的。”的主要内容,如果未能解决你的问题,请参考以下文章