SceneDelegate.swift已废弃/架构变更?新项目无该文件的技术疑问
解答
这是因为苹果的iOS项目模板(关联应用生命周期架构)发生了变更——Xcode 12及之后的版本里,默认新建项目不再生成SceneDelegate.swift文件:
- 对于UIKit项目,场景管理的逻辑被合并到了
AppDelegate.swift中; - 对于SwiftUI项目,直接通过遵循
App协议的结构体来管理应用生命周期,不再依赖SceneDelegate。
如果你需要和教程保持一致,完全可以手动创建这个文件:
- 在项目目录右键选择「New File」,创建名为
SceneDelegate的Swift文件; - 写入基础的SceneDelegate代码:
import UIKit class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: windowScene) // 这里可以添加教程里的后续逻辑,比如设置根视图控制器 } }
- 最后修改
Info.plist,添加「Application Scene Manifest」配置项,指定SceneDelegate为场景代理类,确保系统能正确识别并调用它。
内容的提问来源于stack exchange,提问作者reallymemorable
相关产品推荐
相关产品推荐

