如何调试“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 是在应用程序初始化完成之前创建的。”的主要内容,如果未能解决你的问题,请参考以下文章

如何在PyCharm中调试程序

如何使用VC进行远程调试

如何使用真机调试android程序

如何在 iPhone Safari 上调试网页

如何使用ADB进行调试

如何使用真机调试android程序