Xcode 13运行iOS 15.1.1应用启动前白屏数分钟问题求解
可行解决方案如下:
1. 修复UI初始化逻辑冲突
当前项目已开启UIScene生命周期适配,却仍在AppDelegate的didFinishLaunchingWithOptions方法中手动设置根视图,两处UI初始化逻辑冲突会导致调试阶段系统渲染视图超时,是白/黑屏的核心诱因,按如下步骤修改:
- 移除
AppDelegate中didFinishLaunchingWithOptions内的三行UI相关代码:
// 以下代码删除 let storyboard = UIStoryboard(name: "Main", bundle: nil) self.window?.rootViewController = storyboard.instantiateInitialViewController() self.window?.makeKeyAndVisible()
- 打开
SceneDelegate.swift,在scene(_:willConnectTo:options:)方法中添加根视图初始化逻辑:
guard let windowScene = (scene as? UIWindowScene) else { return } let window = UIWindow(windowScene: windowScene) self.window = window let storyboard = UIStoryboard(name: "Main", bundle: nil) window.rootViewController = storyboard.instantiateInitialViewController() window.makeKeyAndVisible()
2. 调整Firebase初始化时机避免阻塞主线程
FirebaseApp.configure()执行时会同步拉取远程配置、校验集成状态,首次调试时Xcode会额外执行符号校验,双重阻塞主线程导致UI渲染延迟,可将其改为异步执行:
// 放在didFinishLaunchingWithOptions方法中即可 DispatchQueue.global().async { FirebaseApp.configure() }
如果业务依赖Firebase初始化完成后才能执行操作,可添加主线程回调,不要阻塞UI渲染流程。
3. 优化Xcode调试配置
- 打开Xcode顶部菜单栏
Product > Scheme > Edit Scheme - 选中左侧
Run选项,切换到Diagnostics标签页,临时关闭Malloc Scribble、Zombie Objects、Malloc Guard Edges等内存诊断选项(排查内存问题时再重新开启即可) - 切换到
Options标签页,确认Launch选项设置为Automatically,不要选择Wait for executable to be launched
4. 升级Xcode到13系列稳定版本
如果当前Xcode版本低于13.4.1,建议升级到Xcode13.4.1,这是Xcode13系列的最终稳定版本,修复了大量iPhone13系列设备运行iOS15系统时的调试兼容bug。
内容的提问来源于stack exchange,提问作者Arjun
相关产品推荐
相关产品推荐

