반응형
App Delegate
- App 전체가 공유하는 행동들을 관리.
- app delegate는 App의 실질적인 root 객체라고 할 수 있다.
- UIApplication 객체와 함께 동작하여 시스템과의 상호작용을 관리
AppDelegate가 처리하는 작업들
- App의 중심이 되는 데이터 구조 초기화
- Scene 설정/해제
- App 외부로부터 전달되는 알림에 대응 (ex. 메모리부족, 백그라운드 다운로드완료 등)
- 타겟이 특정 scene/view/viewController가 아닌 App 자체인 이벤트에 대응
- 런치 시점에 필요한 서비스 등록 (ex. Apple Push Notification 서비스)
- App 상태 복구(State Restoration) 관리
앱의 생명주기
- Not Running : 실행되지 않았거나, 시스템에 의해 종료된 상태
- Inactive : 실행 중이지만 이벤트를 받고있지 않은 상태. 앱 실행 중 미리알림 등 화면에 덮혀서 앱이 이벤트는 받지 못하는 상태 등
- Active : 어플리케이션이 실질적으로 활동하고 있는 상태.
- Background : 백그라운드 상태에서 실질적인 동작을 하고 있는 상태. 백그라운드에서 음악을 실행 등 뜻함.
- Suspended : 백그라운드 상태에서 활동을 멈춘 상태. 빠른 재실행을 위하여 메모리에 적재된 상태지만 실질적으로 동작하고 있지는 않음.
Scene Delegate
- UISceneSession의 장면 생성, 파괴 및 상태 복원과 같은 장면의 생명주기 이벤트를 담당
SceneDelegate의 역할
씬에 영향을 주는 상태 전이에 대한 응답 방법 정의 (전경으로 들어가서 활성화되거나 백그라운드로 진입할때와 같이)
Scene
- 앱의 UI인스턴스
- 사용자에게 보여지는 뷰 계층(view hierarchy)를 가지고 있는 하나의 컨테이너
- 하나의 앱이 여러개의 Scene을 가질 수 있으며, 각각의 Scene이 서로 다른 객체이므로 독립적인 생명주기를 가지게 된다.
Scene의 생명주기
- Unattached : 씬이 만들어지지 않은 상태
- Inactive : 앱이 실행중 이지만, 이벤트를 받지 못하는 상태
- active : 앱 실행중, 이벤트 받을 수 있음
- Background : 다른 앱 실행, 홈화면으로 이동 등 백그라운드 상태로 넘어간 상태
- Suspend : 백그라운드 진입 후, 아무작업이 없을 경우, 추후 앱을 다시 실행할 경우 빠른실행을 위해 메모리에 남아 있는 상태지만, 메모리가 부족한 상황이 될 경우 메모리에서 해제시킵니다.
앱 시작을 SceneDelegate에서 한 이유
- iOS 13부터 앱 델레게이트와 씬 델레게이트가 책임을 나누어 가지게 되는데
- 씬 델레게이트 UI 라이프 사이클에 대한 책임을 갖고 있기 때문에 UI 시작점을 씬델레게이트를 통해 들어가는게, 맞다 판단
반응형
'iOS > UIKit' 카테고리의 다른 글
[Swift/UIKit] UIColor를 HexString으로 받는 Extension (0) | 2024.07.19 |
---|---|
[Swift/UIKit]CollectionView/TableView Cell안에 버튼넣고 이벤트주는법 (0) | 2023.10.24 |
[UIKit] translatesAutoresizingMaskIntoConstraints (0) | 2023.10.18 |
헷갈리는 Auto Layout 정리하자. (0) | 2023.07.16 |
[Swift/UI Kit] 'SideMenu'라이브러리 적용 (코드로만)feat.SnapKit (1) | 2023.07.01 |