일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 내채공만기
- iOS부트캠프
- 카프카
- SeSAC
- Yolo5 custom dataset
- Apache Spark
- YOLO
- Yolo5
- caffemodel
- 앱생명주기
- opencv
- scenedelegate
- yolov5
- python
- 아파치 스파크
- roboflow
- 얼굴 비식별화
- train data
- SPARK
- 스파크
- Swift
- 파이썬
- Apache Kafka
- 비식별화
- Kafka
- IOS
- 아파치 카프카
- 내일채움공제만기
- 준지도학습
- face blur
- Today
- Total
봉식이와 캔따개
[iOS] 앱의 생명 주기 - App Delegate 와 Scene Delegate 본문
✅ iOS13 이전
iOS13 이전 까지는 AppDelegate에게 두 가지의 책임이 있었다.
1. Process LifeCycle
앱이 켜지고 (App Launced), 앱이 꺼지는 (App Terminated) 이벤트 처리
2. UI LifeCycle
UI의 상태 변화 (Foreground, Background 상태 등)
iOS13 이전 버전에서 하나의 애플리케이션은 하나의 프로세스와 하나의 UI 인스턴스, 즉 하나의 window를 가질 수 있었다.
그러나 iOS13에서 iPadOS와 멀티 윈도우 기능이 등장하며, 하나의 애플리케이션이 여러 window를 가질 수 있게 되어
애플리케이션이 여러 개의 window를 지원해야 하게 되었다.
✅ iOS13 이후
그렇게 Scene Delegate라는 개념이 등장하게 된다.
Scene Delegate는 기존에 App Delegate가 담당하던 UI LifeCycle을 담당하게되면서
App 단위의 상태 변화 관리에서 Scene 단위의 상태 변화 관리로 바뀌게 되었다.
아마 이 친구가 UIScene인 것 같다..
Scene Delegate가 Scene이 생성되고 종료되는 트리거를 App Delegate에게 알려줌으로써
App Delegate가 애플리케이션의 생성과 종료 시점을 통제할 수 있다.
✅ 앱의 상태
✔️ Not Running
앱이 아직 실행되지 않았거나 완전히 종료되어 동작하지 않는 상태
✔️ Foreground - Inactive
앱이 실행 중 이지만 사용자로부터 이벤트를 받을 수 없는 상태
e.g. 앱 실행 중 전화나 알림 등으로 앱을 사용할 수 없게 된 경우
✔️ Foreground - Active
앱이 실행 중이고 사용자로부터 이벤트를 받아 상호작용이 가능한 상태
Active Scene은 화면에 표시되며 사용자가 볼 수 있다
✔️ Background - Running
앱이 실행 중 이지만 화면에는 표시되지 않는 상태
홈 화면으로 나가거나 다른 앱으로 전환하여 현재 앱이 실질적인 동작은 하지 않는 상태
✔️ Background - Suspended
앱을 다시 실행할 경우 빠른 실행을 위해 메모리에 올라가있는 상태
앱이 Background에서 추가적인 작업을 하지 않으면 곧바로 Suspend 상태로 진입한다
iOS의 메모리가 부족해지면 가장 먼저 메모리에서 해제된다
✔️ Unattached
Scnen이 앱과 연결되어있지 않은 상태
✅ 앱의 생명 주기
📌 앱의 생명 주기
앱의 실행과 종료, 앱의 Foreground, Background 상태에 있을 때,
시스템이 발생시키는 이벤트에 의해 앱의 상태가 전환되는 과정
✔️ iOS13 이전
- 화면에 UI가 표시되는지 여부에 따라 앱을 Inactive / Background로 변경
- Foreground 상태가 될 때 앱을 자동적으로 Active 상태로 변경
- Background나 Suspend 상태에서는 메모리가 부족해지면 Not Running 상태로 전환
✔️ iOS13 이후
- 앱 실행
- Scene 연결 (앱 상태 Inactive → Active)
- 앱 실행 후 홈 화면 or 다른 앱으로 전환 (Active → Inactive → Background)
- Background 상태의 앱을 다시 실행 (Background → Inactive → Active)
- Scene 연결 해제
앱의 생명 주기 부분은 App Delegate 와 Scene Delegate 메서드들을 좀 더 자세히 살펴본 후 다시 공부해봐야겠다.
❤️ 참고
https://levenshtein.tistory.com/519
https://jeong9216.tistory.com/461#scenedelegate-life-cycle-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0
'iOS' 카테고리의 다른 글
[iOS] 프로젝트에 custom font 적용하기 (0) | 2023.10.15 |
---|---|
다마고치 어플 만들기 회고 (0) | 2023.08.09 |