Day 32 - TIL
App delegate와 scenedelegate가 무엇인지.
Day 32 - TIL
📘 Day 32 - Today I Learned
🔍 Today’s Error or Issue
오늘 특강을 들으면서 중간에 불쑥 튀어나온
App delegate
와Scene delegate
프로젝트를 생성하면 항상 나오는데 저게 뭔지 궁금해서 찾아보았다!
두가지다 iOS 앱 생명주기에서 앱의 시작부터 종료까지의 흐름을 관리하는 핵심적인 클래스다.
SwiftUI가아닌 UIkit 기반 앱에서 많이 사용되며, iOS 13부터 역할이 나뉘게 되었다고 한다.
App Delegate
AppDelegate는 iOS 앱 전체의 생며주기(Lifecycle
)를 관리하는 핵심 클래스다.
- 앱 실행시 초기설정
- 푸시 알림 등록처리
- 앱이 백그라운드/포그라운드로 전환될 때 호출
- 앱 종료 직전 처리
사용하는 시점으로는 앱 전반적인 설정이나, 상태 관리는 Appdelegate에서 처리한다.
로그시스템 초기화, Firebase 초기화, 푸시 알림 등록 등
1
2
3
4
5
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 앱 시작 시 초기 설정
return true
}
Scene Delegate
SceneDelegate는 하나의 화면(UI window)에 대한 생명주기를 관리한다. iOS 13부터 도입되었으며, 멀티 윈도우 특히(iPad)를 지원하기 위해 생긴 구조다.
- 앱의 UI(윈도우)를 생성하고 표시
- 뷰 컨트롤러 설정(rootViewController)
- 화면이 포그라운드/백그라운드로 전환될때 호출
UI 관련 설정이나 루트 뷰 구성은 여기서 한다.
로그인 여부에 따라 Root ViewController 결정 등
1
2
3
4
5
6
7
8
9
func scene(_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
window?.rootViewController = MainViewController()
window?.makeKeyAndVisible()
}
📘 Lesson Learned
이전엔 아무 생각 없이 있던 AppDelegate와 SceneDelegate가 사실은 앱 구조의 핵심이었다.
특히 SceneDelegate는 멀티 화면, 윈도우의 진입점 역할을 하기 때문에
루트 뷰를 설정하거나, 앱 상태 전환 시 처리할 일이 있다면 SceneDelegate에 작성해야 한다는 점을 알게 되었다.
This post is licensed under CC BY 4.0 by the author.