참고자료
목차 (눌러서 이동)
iOS 13 이전의 App Delegate
iOS 13 이전의 App Delegate 는 Process level 의 App event 를 관리 (App Launched) 하거나, App 의 UI Status 를 관리(Entered Foreground)했다.
이전에는 App 이 하나의 Process 와 이를 표현하기 위한 하나의 UI 를 가졌었다. 하지만, iOS 13 부터 하나의 Process 에 대해 여러 UI 객체를 (Scene Session 이라고 부른다.) 가질 수 있게 되어 UI 에 대한 책임을 Scene Delegate class 로 분리한다.
App Delegate & Scene Delegate
App Delegate 는 이전처럼 App process 에 대해 관리하고 UI 에 대한 책임은 Scene Delegate 가 지게 된다. App Delegate 에 있던 UI 에 대한 methods 가 Scene Delegate 에 동일한 이름으로 구현되어 있다.
App Delegate 는 추가로 Session lifecycle 을 관리하게 되는데 Session 이 생성되고 폐기되는 과정을 다룬다.
App 의 실행을 Call stack 의 관점에서 살펴보자.
App 이 실행되면 didFinishLaunching method 가 호출되고 그 후 configurationForSession 을 통해 Scene Session 이 생성된다.
생성된 Scene 으로 Scene Delegate 에서 UIWindow 가 만들어지고 비로소 UI 를 눈으로 확인할 수 있게 된다.
사용자가 Background 로 나가면 다음과 같은 methods 를 호출한다.
Background 로 간 Scene 은 memory 효율성을 위해 일정 시간이 지나면 Disconnect 된다. Scene Delegate 를 memory 에서 해제하는 것인데, 관련된 User data 는 제거되지 않는다.
만약 사용자가 App 을 완전히 종료하면 App Delegate 의 didDiscardSceneSession 이 호출되고 Session 이 완전히 폐기되며 관련 Data 또한 삭제된다.
'iOS 개발 > App 개발 관련' 카테고리의 다른 글
[iOS] GCD, 비동기 프로그래밍 (0) | 2022.01.29 |
---|---|
[iOS] Stanford iOS Lecture - MVVM (cs193p) (0) | 2021.08.31 |
[iOS] 모의 URLSession 으로 네트워킹 Test 하기 (0) | 2021.07.30 |
[iOS] TDD(Test Driven Development) Tutorial (0) | 2021.07.16 |
[iOS] WWDC 2019 Testing in Xcode (0) | 2021.07.12 |