You need to enable JavaScript to run this app. iOS11+项目移除SceneDelegate后didFinishLaunchingWithOptions是否需加代码
优惠活动
大模型
产品
解决方案
定价
更多

iOS11+项目移除SceneDelegate后didFinishLaunchingWithOptions是否需加代码

问题解答

你实测不加额外初始化代码也能正常运行,是UIKit的官方原生逻辑,不是Xcode的后台特殊处理,只要配置正确不会有后续隐患,具体逻辑如下:
iOS 13 推出UISceneDelegate之前,UIKit本身就支持主Storyboard自动加载逻辑:当系统检测到App没有使用UISceneDelegate、且项目配置指定了主Storyboard作为入口时,会自动完成以下操作:

  1. 创建和屏幕尺寸匹配的UIWindow实例
  2. 加载Storyboard中的初始视图控制器,赋值给window.rootViewController
  3. 自动调用window.makeKeyAndVisible()让界面展示
  4. 将生成的window实例挂载到AppDelegate的var window: UIWindow?属性上

你查到的需要手动写初始化代码的教程,对应的是全代码构建界面、不使用Storyboard作为入口的场景,这种场景下系统找不到默认的界面入口,才需要开发者手动完成window的初始化和配置。

注意事项

  • 确认info.plist中已经完全删除Application Scene Manifest配置项,没有删干净的话iOS13及以上系统会优先尝试走UISceneDelegate逻辑,导致崩溃
  • 确认项目General设置页的Deployment Info区块中,Main Interface选项已经正确选中你要用的主Storyboard,要是这里为空才需要手动写初始化代码
  • 如果后续计划改成全代码入口,再清空Main Interface配置,加上你注释里的手动初始化代码即可

内容的提问来源于stack exchange,提问作者Andrei Herford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 08:27:08