기어가더라도 제대로

AppDelegate, SceneDelegate 본문

UIKit 기초

AppDelegate, SceneDelegate

Damagucci-juice 2022. 5. 4. 16:09
훌륭한 글을 읽고 학습하며 정리한 내용입니다.
틀린 부분은 말씀해주시면 반영토록 하겠습니다.

❤️ 참조 

https://lena-chamna.netlify.app/post/appdelegate_and_scenedelegate/

 

[iOS] AppDelegate와 SceneDelegate

iOS 13 이후 AppDelegate와 SceneDelegate

lena-chamna.netlify.app

구성도

AppDelegate, SceneDelegate

 

iOS 13 전에 환경

  • 화면의 관장 단위가 UIWindow 이고, 앱 마다 1개씩 주어짐
  • UI LifeCycle 을 App Delegate에서 담당
    • UI Life Cycle 의 담당 주최가 Scene Delegate로 변경
    • App Delegate 에 Session Life Cycle이 추가됨

App Deleagate의 역할

  1. 데이터 구조 초기화
  2. 앱의 Scene의 환경 설정
  3. 앱 밖에서 발생한 알림(배터리 부족, 다운로드 완료 등)에 대응
  4. 특정한 Scene, View, View Controller에 국한되지 않고, 앱 자체를 타겟으로 하는 이벤트에 대응
  5. 애플 푸쉬 알림 서비스와 같이 실행시 요구되는 모든 서비스 등록

Scene 은 무엇일까?

위에서 UIWindow가 담당하던 일을 Scene 이라는 객체로 이전하였다. 

  • Scene
    • UIWindow
    • View Controller
    • UIWindowSceneDelegate

이 덕분에 특이 사항이 두가지 생긴다. 

  • Scene 들은 앱의 메모리와 프로세스 공간을 공유한다.
  • "앱 : Scene = 1 : N" 의 관계를 가질 수 있다.


Scene Session

  • 역할
    • App Delegate가 Scene 에 대한 정보를 업데이트 받는데 사용된다.
    • Scene 의 고유한 런타임 인스턴스를 관리 -> Scene 을 추적하는 Session 객체이다.
  • 구성
    • 고유 식별자(ID)
    • 구성 세부사항(Configuration Details)

정리하자면, UIKit 이 Session 의 정보를 가지고 이 Session 이 Scene의 정보를 담고 있다. 이로써 App Delegate는 Scene의 직접적인 정보를 들고 있을 필요가 없이, Session ID 로 Scene이 현재 메모리에 올라와있는지, 화면에 나타나있는지 등에 대한 정보를 받는다. 비유를 하자면, Session 이 주민등록번호이고, Scene이 사람이다. Scene이 생성되면 주민번호를 부여받고, Scene 이 사망하면 주민번호를 삭제한다. 

Comments