일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- OpenAI
- weatherkit
- SwiftUI
- AppleDeveloper
- state
- singleton
- Adapter
- dartz
- 문법
- SampleApp
- isolate
- Architecture
- factory
- network
- designpattern
- LifeCycle
- WiFi
- Xcode
- GIT
- philipshue
- dart
- uikit
- concurrency
- WWDC24
- tuist
- swift
- iot
- builder
- EventLoop
- flutter
Archives
- Today
- Total
Jaebi의 Binary는 호남선
AppDelegate & SceneDelegate 본문
목차
Preliminary
- iOS 13 이상부터 AppDelegate의 UI LifeCycle 관리를 SceneDelegate가 하게됨
AppDelegate
- ~ iOS 12
- Application에게 process level의 이벤트 발생을 알려줌
- UI의 상태 변화를 알려줌
- iOS 13 ~
- Application에게 process level의 이벤트 발생을 알려줌
- Application에게 scene session life cycle을 알려줌 (신규)
- 기존 UI Life Cycle은 Scene Delegate가 담당하게 됨
iOS 13부터의 AppDelegate
- application의 entry point 역할
- application level의 life cycle을 관리
- `func application(_: didFinishLaunchingWithOptions: ) -> Bool`
- application의 setup을 이 함수 내부에서 진행 (초깃값 셋팅)
- 앱 실행시 최초로 실행할 코드 (ex. firebase configure)
- 애플리케이션이 실행된 직후 사용자의 화면에 보여지기 직전에 호출
- `func application(_: configurationForConnecting:options: ) -> UISceneConfiguration`
- 새로운 scene이 생긴 뒤 실행
- 새 Scene 만들때 UIKit를 위한 configuration data를 가져옴
- `func application(_: didDiscardSceneSessions: )`
- application이 scene을 버릴(삭제될) 때 불림
- 사용자가 app switcher에서 하나 이상의 앱 Scene을 닫았음을 AppDelegate에게 전달
- `func applicationWillTerminate(_ application: UIApplication)`
- application 종료되기 직전에 호출
- `func application(_: didFinishLaunchingWithOptions: ) -> Bool`
SceneDelegate
- 화면에 무엇(scene, window)를 보여줄 지 관리하는 역할
- UI의 상태변화를 메소드를 통해 application에게 알리는 역할을 함
- Scene Delegate가 가지는 메소드
- `scene(_: willConnectTo: options:)`
- scene이 앱에 추가될 때 호출
- `sceneWillEnterForeground(_ :)`
- Scene이 foreground 상태로 전환될 때 불림
- ex) background → foreground,
- Background나 Not Running에서 Foreground로 들어가기 직전에 호출
- Scene이 foreground 상태로 전환될 때 불림
- `sceneDidBecomeActive(_ :)`
- scene이 active 상태가 되었을 때
- ex) inactive → active,
- scene이 setup되고 사용될 준비가 완료된 상태
- 앱이 실제로 사용되기 전에 마지막으로 준비할 코드
- scene이 active 상태가 되었을 때
- `sceneWillResignActive(_ :)`
- active → inactive 상태로 변할 때 불림
- ex) 앱 사용 중 전화가 걸려올 때, 앱 스위처 화면으로 나갈 때
- active → inactive 상태로 변할 때 불림
- `sceneDidEnterBackground(_ :)`
- Scene이 background로 전환될 때 불림
- ex) foreground → background
- User data저장 -> 앱이 종료(deallocated from RAM) 되는 시점을 예측할 수 없기 때문
- Scene이 background로 전환될 때 불림
- `sceneDidDisconnect(_ :)`
- Scene이 disconnect가 되었을 때 호출 (다시 연결될 수 있음)
- ex) scene과 관련된 불필요한 자원들을 돌려주는 작업 수행
- Scene이 disconnect가 되었을 때 호출 (다시 연결될 수 있음)
- `scene(_: willConnectTo: options:)`
예시 (SceneDelgate Life Cycle)
- User가 앱을 킴
- `scene(_: willConnectTo: options:)`
- `sceneWillEnterForeground`
- `sceneDidBecomeActive`
- User가 Home 화면으로 간 경우 (SceneDelgate)
- `sceneWillResignActive` (active → inactive)
- `sceneDidEnterBackground` (foreground → background)
- User가 Home 화면에서 background 된 앱을 다시 킨 경우
- `sceneWillEnterForeground`
- `sceneDidBecomeActive`
Reference
'Swift' 카테고리의 다른 글
SwiftUI - ViewModifier (1) | 2024.07.23 |
---|---|
SwiftUI - Navigation (1) | 2024.07.23 |
App Lifecycle (0) | 2024.07.21 |
SwiftUI - App Protocol (0) | 2024.07.21 |
ARC (Automatic Reference Counting) (0) | 2024.07.20 |