Xcode开发Swift应用真机运行仅显示LaunchScreen启动页问题求助
故障触发原因
根视图控制器配置异常
- 未正确给主窗口设置
rootViewController:iOS13以下需要在AppDelegate的application(_:didFinishLaunchingWithOptions:)方法中手动赋值window?.rootViewController,iOS13及以上版本需要额外检查SceneDelegate的scene(_:willConnectTo:options:)方法内的根控制器配置逻辑,如果未赋值,系统仅加载启动页后不会继续渲染主界面 Info.plist配置错误:如果原本使用Storyboard作为主入口,确认Main storyboard file base name(iOS12及以下)和Application Scene Manifest下的Storyboard Name(iOS13及以上)字段值正确;如果已经改为纯代码入口,确认已经删除上述字段且手动配置了根控制器
主线程阻塞
- 启动生命周期方法内执行了同步耗时操作:比如同步网络请求、大文件IO、全量数据库查询、大量数据计算等,这类操作会卡住主线程,UI渲染流程无法继续推进
- 存在死锁逻辑:最常见的是主线程中调用
DispatchQueue.main.sync同步派发到主队列,导致线程永久阻塞,后续代码完全无法执行
依赖或初始化逻辑异常
- 第三方依赖编译或初始化失败:真机架构下部分依赖(尤其是包含二进制组件的依赖)可能编译异常,或者依赖的全局初始化方法抛出未捕获的错误,导致流程卡住
- 全局异常捕获逻辑拦截了启动阶段的错误,没有抛出异常也没有继续执行后续UI加载代码
UI层级异常
- 启动页窗口未正常销毁:手动修改过启动页窗口的
windowLevel为较高优先级,导致启动页始终覆盖在主界面上方 - 有自定义全屏遮罩/空白视图意外添加到了窗口最上层,挡住了实际已经加载完成的主界面
快速验证方案
- 分别在
didFinishLaunchingWithOptions入口、rootViewController赋值代码行加断点,运行后确认断点是否都能命中,若卡在启动方法内,说明是启动流程阻塞问题 - 触发Xcode的
Debug View Hierarchy功能查看当前UI层级,可直接判断主界面控制器是否已经加载、是否被其他视图遮挡
内容的提问来源于stack exchange,提问作者Туе Нгуен
相关产品推荐
相关产品推荐

